我有一个基本的MySQLi查询,它返回一个MySQLi对象并在foreach();
中循环它以显示我的数据库中的数据转储。当我在本地运行PHP 5.5.9进行测试时,一切都很好,但是当我把它放在运行PHP 5.3.3的远程生产服务器上时,它将返回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中重写了查询,并且能够从数据库中获取数据。
答案 0 :(得分:1)
MySQLi->query在成功检索结果集时返回MySQLi_result类。
Iterator对MySQLi_result的支持仅在PHP 5.4中添加,如果您的PHP版本早于使用fetch_assoc以传统方式遍历这些结果所需的版本:
while($y = $result->fetch_assoc()) {
echo $y["definition"];
}
答案 1 :(得分: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结果。