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