我正在对db
进行下一个查询$result = $con->query ( 'select * from table');
$datos = $result->fetch_assoc();
echo "Cantidad de datos: ".count($datos).",";
print_r($datos);
应显示包含所有条目的数组,但仅显示第一个条目。为什么呢?
PS:我看过其他帖子,但我没有限制或加入。
答案 0 :(得分:5)
fetch_assoc将结果行作为关联数组
因此,如果可能的话,您可以使用while循环遍历所有行,然后获取另一行。
$count = 0;
while( $row = $result->fetch_assoc() ){
// You can access data like this -->> $row['data'];
$count++;
}
echo $count;
完成后,你应该释放与结果相关的记忆
$result->free();
但如果您只想获得计数,可以使用mysql_num_rows返回结果集中的行数。
$count = mysql_num_rows($result);
echo $count;
答案 1 :(得分:1)
fetch_assoc
时, $datos = $result->fetch_assoc();
只返回一行您可以在PDO
和mysqli
中获取整个数组。以下是使用以下方式获取所有行的示例mysqli->fetch_all函数,希望这有帮助!
//Database Connection
$sqlConn = new mysqli($hostname, $username, $password, $database);
//Build SQL String
$sqlString = "SELECT * FROM my_table";
//Execute the query and put data into a result
$result = $this->sqlConn->query($sqlString);
//Copy result into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC);
//Copy result into a numeric array
$resultArray = $result->fetch_all(MYSQLI_NUM);
//Copy result into both a associative and numeric array
$resultArray = $result->fetch_all(MYSQLI_BOTH);
答案 2 :(得分:0)
请始终参阅您正在使用的框架手册。 fetch_assoc();获取结果行作为关联数组。如果要获取所有行,请使用while语句,如下所示:
$result = $c->query('SELECT user,host FROM mysql.user');
while ($row = $result->fetch_assoc()) {
printf("'%s'@'%s'\n", $row['user'], $row['host']);