Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
427 views
in Technique[技术] by (71.8m points)

php - mysql_fetch_array does not retrieve all rows

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

This returns

2063:7

I have not used count before, so I'm not 100% sure it's not counting the table columns. It's late and I might be going nuts.

Here's another example of what's happening:

$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>";

Which outputs:

Rows: 9 
Array
(
    [playerID] => 10000030
)

TL;DR: I submit queries which return multiple rows, but fetch_array only gives me a small portion of those rows in the resulting array.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Every call to mysql_fetch_assoc($result); gives you one row of the result set:

(from the documentation)

mysql_fetch_assoc — Fetch a result row as an associative array

Returns an associative array that corresponds to the fetched row and moves the internal data pointer ahead. mysql_fetch_assoc() is equivalent to calling mysql_fetch_array() with MYSQL_ASSOC for the optional second parameter. It only returns an associative array.

You have to use the function in a loop:

$all = array();

while(($row = mysql_fetch_assoc($result))) {
    $all[] = $row;
}

The example in the document shows how it is done.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...