何らかの理由でこのPHPコードが実行中にNULLを返しています... cud any1親切にそれを修正するのに役立ちますか?php pdo:update + insert then select returns 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バッチをコメントアウトし、一人で$クエリバッチを実行し、個別のクエリの2つの部分を実行したときしかし、それが動作し、その値を返しますが...、それが正常に動作します。..しかし、述べたように結合されていません。私はそれをどのように実行するのですか?
私はまだ同じ結果BT selectクエリのためにあまりにもこのモデルを試してみた:
$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
2つの部分を別々に実行すると、より明示的になりますか? – Progrock