为什么选择*仅返回第一个字段?

时间:2016-03-07 08:59:17

标签: php sql fetch

我正在对db

进行下一个查询
$result = $con->query ( 'select * from table');
$datos = $result->fetch_assoc();
echo "Cantidad de datos: ".count($datos).",";
print_r($datos);

应显示包含所有条目的数组,但仅显示第一个条目。为什么呢?

PS:我看过其他帖子,但我没有限制或加入。

3 个答案:

答案 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();只返回一行您可以在PDOmysqli中获取整个数组。以下是使用以下方式获取所有行的示例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']);