在SELECT on prepared语句(fetch_assoc()函数)期间发生PHP错误
这是一个常见的问题,但我已经做了研究,找不到解决办法。我来了 我得到的错误是:致命错误:对非对象调用成员函数fetch_assoc() 首先,我启用了mysqlnd。其次,我的查询没有错误。我能够在phpmyadmin中运行它,没有任何问题 下面是正在运行的查询:在SELECT on prepared语句(fetch_assoc()函数)期间发生PHP错误,php,mysqli,Php,Mysqli,这是一个常见的问题,但我已经做了研究,找不到解决办法。我来了 我得到的错误是:致命错误:对非对象调用成员函数fetch_assoc() 首先,我启用了mysqlnd。其次,我的查询没有错误。我能够在phpmyadmin中运行它,没有任何问题 下面是正在运行的查询: SELECT * FROM photos WHERE name LIKE '%ait%' UNION SELECT photos.* FROM photos, photo_tag, tags WHERE photo_tag.ph
SELECT * FROM photos WHERE name LIKE '%ait%'
UNION
SELECT photos.* FROM photos, photo_tag, tags
WHERE photo_tag.photo_id = photos.id
AND photo_tag.tag_id = tags.id
AND tags.name IN('ait')
$stmt = $this->conn->prepare($query);
if($stmt){
$stmt->execute();
while($row = $stmt->get_result()->fetch_assoc()){
$photo = new Photo(null, null, null, null);
$photo->id=$row["id"];
$photo->userId=$row["user_id"];
$photo->name = $row["name"];
$photo->photoPath=$row["photo_path"];
$result[] = $photo;
}
return $result;
}else{
var_dump($this->db->error);
}
下面是发生错误的代码(更具体地说是在fetch_assoc()函数中):
SELECT * FROM photos WHERE name LIKE '%ait%'
UNION
SELECT photos.* FROM photos, photo_tag, tags
WHERE photo_tag.photo_id = photos.id
AND photo_tag.tag_id = tags.id
AND tags.name IN('ait')
$stmt = $this->conn->prepare($query);
if($stmt){
$stmt->execute();
while($row = $stmt->get_result()->fetch_assoc()){
$photo = new Photo(null, null, null, null);
$photo->id=$row["id"];
$photo->userId=$row["user_id"];
$photo->name = $row["name"];
$photo->photoPath=$row["photo_path"];
$result[] = $photo;
}
return $result;
}else{
var_dump($this->db->error);
}
如果你们能帮助我,我将非常感激。您应该只调用
get\u result()
一次,而不是每次通过循环
$stmt->execute();
$stmt_result = $stmt->get_result();
while($row = $stmt_result->fetch_assoc()){
$photo = new Photo(null, null, null, null);
$photo->id=$row["id"];
$photo->userId=$row["user_id"];
$photo->name = $row["name"];
$photo->photoPath=$row["photo_path"];
$result[] = $photo;
}
使用左联接而不是表1、表2、表3中的联接。问题出在SQL中query@EduardVoid不是。有很多方法可以连接。使用JOIN或我的方式。