从mysql查询php创建数组

gan*_*jan 7 php mysql arrays

我有一点我不明白的问题.我有一个拥有所有者和类型的数据库(当然还有更多).我想得到一个列表,其中包含所有者等于当前用户的所有类型值,但我只得到两个结果

$sql = "SELECT type FROM cars WHERE owner='".mysql_real_escape_string($_SESSION['username'])."' AND selling='0' ORDER BY id DESC "; 

 $result = mysql_query($sql,$con); 

 print_r(mysql_fetch_array($result));
Run Code Online (Sandbox Code Playgroud)

打印出来:

Array ( [0] => 18 [type] => 18 )
Run Code Online (Sandbox Code Playgroud)

$sql = "SELECT type FROM cars WHERE owner='".mysql_real_escape_string($_SESSION['username'])."' AND selling='0' "; 
Run Code Online (Sandbox Code Playgroud)

打印出来:

Array ( [0] => 16 [type] => 16 ) 
Run Code Online (Sandbox Code Playgroud)

结果应该是数组中的19,19,18,17,16.这就是我设置为所有者的所有类型.

我现在有这个工作:

for ($x = 0; $x < mysql_num_rows($result); $x++){
 $row = mysql_fetch_assoc($result);  
 echo $row['type']; 
}
Run Code Online (Sandbox Code Playgroud)

这里我正确地打印出所有值,但是我需要创建一个包含所有值的数组.我虽然可以使用array_push,但大多数都有更好的方法.我以为我会通过简单的mysql查询获得所有类型值.

Fel*_*ing 26

通常这是在while循环中完成的:

$types = array();

while(($row =  mysql_fetch_assoc($result))) {
    $types[] = $row['type'];
}
Run Code Online (Sandbox Code Playgroud)

看一下文档中的示例.

mysql_fetch_*方法将总是得到下一个结果集的元素:

返回与获取的行对应的字符串数组,如果没有更多行,则返回FALSE.

这就是while循环工作的原因.如果没有任何行$row将会存在false并且while循环存在.

它似乎只有mysql_fetch_array多行,因为默认情况下它会获得正常的结果关联值:

通过使用MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组.

您的示例最佳显示,您获得相同的值18,您可以通过$v[0]或访问它$v['type'].


Mas*_*der 6

THE CORRECT WAY ************************ THE CORRECT WAY

while($rows[] = mysqli_fetch_assoc($result));
array_pop($rows);  // pop the last row off, which is an empty row
Run Code Online (Sandbox Code Playgroud)

  • 旧版mysql?您必须表示已弃用的Mysql。 (2认同)