一尘不染

用mysqli结果获取行数组

php

我需要从结果对象获取所有行。我正在尝试建立一个将容纳所有行的新数组。

这是我的代码:

$sql = new mysqli($config['host'],$config['user'],$config['pass'],$config['db_name']);
if (mysqli_connect_errno())
{
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$query = "SELECT domain FROM services";
$result = $sql->query($query);           
while($row = $result->fetch_row());
{
    $rows[]=$row;
}
$result->close();
$sql->close();
return $rows;

$rows 应该是包含所有行的新数组,但是我得到一个空数组。

任何想法为什么会这样?


阅读 278

收藏
2020-05-29

共1个答案

一尘不染

您有一个轻微的语法问题,即错误的分号。

while($row = $result->fetch_row());

注意结尾的分号吗?这意味着后面的程序段不是循环执行的。摆脱它,它应该可以工作。

另外,您可能需要检查查询是否确实有效:

$sql = new mysqli($config['host'], $config['user'], $config['pass'], $config['db_name']);
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit;
}
$query = "SELECT domain FROM services";
$result = $sql->query($query);     
if (!$result) {
  printf("Query failed: %s\n", $mysqli->error);
  exit;
}      
while($row = $result->fetch_row()) {
  $rows[]=$row;
}
$result->close();
$sql->close();
return $rows;
2020-05-29