-2

我有一个基本的 MySQLi 查询,它返回一个 MySQLi 对象并在 a 中循环它foreach();以显示我的数据库中的数据转储。当我在本地运行 PHP 5.5.9 测试它时,一切都很好,但是当我将它放在运行 PHP 5.3.3 的远程生产服务器上时,它会在 a 中返回对象,var_dump但它不会循环遍历结果并显示它们。

这是代码:

if ($mysqli->connect_errno) {
echo "There was an error";
     } else {

          if ($result = $mysqli->query("SELECT * FROM acronyms")) {

     }
       else {

    echo "query error";

     }

     foreach($result as $x=>$y) {
         echo $y["definition"];
     }
}       

?>

似乎 mysqli 安装在我的生产服务器上,但不会循环进入我的测试服务器中具有的相同文件。

我还在常规 MySQL 中重写了查询,并且能够从数据库中获取数据。

4

2 回答 2

1

MySQLi->query在成功检索结果集时返回MySQLi_result类。

仅在 PHP 5.4 中添加了对 MySQLi_result 的迭代器支持,如果您的 PHP 版本早于该版本,您将需要使用fetch_assoc以传统方式遍历这些结果:

while($y = $result->fetch_assoc()) {
    echo $y["definition"];
}
于 2014-05-21T12:27:06.637 回答
0

您实际上需要对结果做一些事情,例如使用fetch_assoc()来对结果进行交互。

$mysqli = new mysqli("localhost", "name", "pw", "db");

if ($mysqli->connect_errno) {
  echo "There was an error";
}
else {

  if ($result = $mysqli->query("SELECT * FROM acronyms")) {
  }
  else {
    echo "query error";
  }

  while ($row = $result->fetch_assoc()) {
    echo $row["definition"];
  }

}

请注意,while ($row = $result->fetch_assoc()) {这是一种相当标准的方法,用于遍历 MySQLi 结果。

于 2014-05-21T12:28:05.037 回答