mysql_fetch_array不检索所有行

sej*_*jje 4 php mysql arrays

$query = "SELECT * FROM table";
$result = mysql_query($query, $db);
$all = mysql_fetch_assoc($result);
echo mysql_num_rows($result) . ":" . count($all);
Run Code Online (Sandbox Code Playgroud)

这回来了

2063:7
Run Code Online (Sandbox Code Playgroud)

我之前没有使用过计数,所以我不是100%肯定它不计算表格列.现在已经很晚了,我可能会疯了.

这是发生了什么的另一个例子:

$result = mysql_query($query, $db);
echo "Rows: " . mysql_num_rows($result) . " <BR />";

$player_array = mysql_fetch_assoc($result);
echo "<pre>";
print_r($player_array);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Rows: 9 
Array
(
    [playerID] => 10000030
)
Run Code Online (Sandbox Code Playgroud)

TL; DR:我提交的返回多行的查询,但fetch_array只给出了结果数组中这些行的一小部分.

Sha*_*ngh 7

mysql_fetch_assoc 只需返回一行,您必须使用循环来检索所有行

while($row = mysql_fetch_assoc($result))
{
   print_r($row);
}
Run Code Online (Sandbox Code Playgroud)


Fel*_*ing 7

每次调用mysql_fetch_assoc($result);都会给你一行结果集:

(来自文档)

mysql_fetch_assoc - 将结果行作为关联数组获取

返回与获取的行对应的关联数组,并将内部数据指针向前移动.mysql_fetch_assoc()等效于为可选的第二个参数调用mysql_fetch_array()MYSQL_ASSOC.它只返回一个关联数组.

你必须在循环中使用该函数:

$all = array();

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

文档中的示例显示了它是如何完成的.