出於某種原因,在執行這個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