This question already has an answer here:
mysqli_fetch_assoc() expects parameter / Call to a member function bind_param() errors. How to get the actual mysql error and fix it?
(1个答案)
3年前关闭。
收到此错误,不确定发生了什么。使用mysqli的新手。
MySQL数据库中目前只有一行。但是,当我复制$ query并在mysql命令提示符下运行它时,它查询正常并显示一个结果。
尝试使用双引号(
如果由于某种原因想要在字符串中连接值,则执行以下操作:
如果仍然有问题,另一个想法是使用准备好的语句方法。您永远不知道
(1个答案)
3年前关闭。
收到此错误,不确定发生了什么。使用mysqli的新手。
$query = 'SELECT name, email FROM US__users WHERE state="' . $state . '" ORDER BY zip ASC LIMIT 5';
$result = $mysqli->query($query);
while ($row = $result->fetch_array()) {
print ($row['name'] . ' ' . $row['email']);
}
$result->free();
MySQL数据库中目前只有一行。但是,当我复制$ query并在mysql命令提示符下运行它时,它查询正常并显示一个结果。
最佳答案
查询字符串在语法上不正确。你有这个:
$query = 'SELECT name, email FROM users WHERE state="' $state '" ORDER BY zip ASC LIMIT 5';
尝试使用双引号(
"
)允许字符串替换:$query = "SELECT name, email FROM users WHERE state='$state' ORDER BY zip ASC LIMIT 5";
如果由于某种原因想要在字符串中连接值,则执行以下操作:
$query = "SELECT name, email FROM users WHERE state='" . $state . "' ORDER BY zip ASC LIMIT 5";
如果仍然有问题,另一个想法是使用准备好的语句方法。您永远不知道
state
是否需要过滤。所以尝试一下。$query = "SELECT name, email FROM US__users WHERE state=? ORDER BY zip ASC LIMIT 5";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $state);
$result = $stmt->execute();
$stmt->close();
while ($row = $result->fetch_array()) {
print ($row['name'] . ' ' . $row['email']);
}
$result->free();
关于php - PHP MySQL致命错误:在非对象中调用成员函数fetch_array()在[duplicate]中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24316212/