php - fatal error : Call To A Member Function Fetch_assoc() On Boolean

标签 php mysql mysqli

<分区>

我只想选择 authorId 仅为 1 和 2 的帖子。我这样做是这样的:

$array = [1,2];
$array = implode(", ",$array);
$sql = "SELECT * FROM post WHERE authorId = ({$array})";
$res = $con->query($sql);

while($row = $res->fetch_assoc()){
    echo $row['firstname'] . ' ' . $row['lastname'];
}

我收到错误信息:

Fatal error: Call to a member function fetch_assoc() on boolean in C:\xampp\blablaba.php on line blablaba

但是当我尝试只从一位作者那里获取帖子时,我没有收到任何错误消息。实际上它有效,这是我的一个 authorId 的代码:

$sql = "SELECT * FROM post WHERE authorId = 1)";
$res = $con->query($sql);

while($row = $res->fetch_assoc()){
    echo $row['firstname'] . ' ' . $row['lastname'];
}

最佳答案

对于这段代码:

$array = [1,2];
$array = implode(", ",$array);
$sql = "SELECT * FROM post WHERE authorId = ({$array})";

原始 sql 查询将是:

"SELECT * FROM post WHERE authorId = ('1, 2')"

首先,您可以使用“IN”运算符更改查询:

"SELECT * FROM post WHERE authorId IN ({$array})"

原始查询:

"SELECT * FROM post WHERE authorId IN ('1, 2')"

但是,IN ('1, 2') 的类型是字符串,而这可能是整数值列表。您必须使用 CAST 将此字符串转换为字符值集功能:

CAST($array as CHAR);

然后,现在,用 FIND_IN_SET 在这个集合中找到功能:

 FIND_IN_SET(authorId, CAST($array as CHAR));

最终的 sql 查询将是:

"SELECT * FROM post WHERE FIND_IN_SET(authorId, CAST($array as CHAR));"

原始查询:

"SELECT * FROM post WHERE authorId IN (1, 2);"

关于php - fatal error : Call To A Member Function Fetch_assoc() On Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973095/

相关文章:

mysql - 如何避免在 MySQL 中重复注册

php - 每次我编辑一行时,它都会创建另一行

php - 为什么 php mysqli 不向 Xampp 中的数据库插入数据

javascript - 使用 PHP 和 Ajax 提交包含文本和图像的表单

PHPMailer 5.2.0 每次发出2封邮件

每个项目的 php foreach 添加 tr

php - 更新超过三行时mysqli stmt错误?

php - 是否有相当于 strtotime 的 R

mysql - MySQL 的 MEMORY 存储引擎的替代品

javascript - 使用 AJAX 将 SQL WHERE 查询获取到 JavaScript 中