由于某种原因,执行时此 php 代码返回 NULL...cud any1 请帮助纠正它?
public function like($pid)
{
$uid = escape($_SESSION['user']);
$sql = $this->_db->prepare("UPDATE postsinitial SET likes = likes+1 WHERE pid = :m;INSERT IGNORE INTO userlikedposts (ulp_userid,ulp_postid) VALUES (:k, :m)");
$sql->bindValue(':k', $uid);
$sql->bindValue(':m', $pid);
$sql->execute();
$query = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = :n");
$query->bindParam(':n', $pid);
$query->execute();
while($rows = $query->fetch())
{
return $rows['likes'];
}
}
但是当我分别运行查询的两个部分时,即注释掉 $sql 批处理代码并单独运行 $query 批处理时,它可以工作并返回一个值..,它工作正常..但不能合并为声明..那么我该如何按原样运行它?
我也为选择查询尝试过这个模型,结果仍然相同:
$query = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = :n");
$query->bindParam(':n', $pid);
$query->execute();
while($rows = $query->fetch(PDO::FETCH_ASSOC))
{
return $rows[0]['likes'];
}
最佳答案
答案很简单:
您应该一个一个地运行您的查询,而不是将它们全部塞进一个调用中。运行插入查询分隔 rom 更新,你会没事的。
public function like($pid)
{
$sql = "UPDATE postsinitial SET likes = likes+1 WHERE pid = ?";
$this->_db->prepare($sql)->execute($_SESSION['user']);
$sql = "INSERT IGNORE INTO userlikedposts (ulp_userid,ulp_postid) VALUES (?, ?)";
$this->_db->prepare($sql)->execute([$_SESSION['user'], $pid]);
$stmt = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = ?");
$stmt->execute([$pid]);
return $stmt->fetchColumn();
}
关于PHP pdo : update + insert and then select returns null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311130/