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的新手。

$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/

10-11 22:25
查看更多