出于某种原因,在执行这个PHP代码返回NULL ...反刍ANY1纠正它好心帮?PHP PDO:更新+插入,然后选择返回null
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批处理代码,并单独运行$查询批处理,它的工作原理,并返回一个值..,它工作正常..但没有组合如所述..所以我如何运行它是?
我已经试过这种模式也为select查询BT还是同样的结果:
$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'];
}
您是否在PDO下报告错误?我认为它可能是以下内容,但我认为默认情况下,mysql使用准备好的查询模拟,所以也许不会。从手册:当您调用PDOStatement :: execute()时,您必须为每个希望传入语句的值包含唯一的参数标记。除非启用了仿真模式,否则不能在准备好的语句中多次使用同名的命名参数标记。 – Progrock
当你说分开运行两个部分时,你能更明确吗? – Progrock