単純なmysql更新クエリで影響を受ける行の数を取得しようとしています。しかし、PHPのmysql_affected_rows()は常に0に等しくなります。foo = 1の場合でも、(は正しくに戻ります。変更された行がないため)、またはfooが現在他の整数(この場合、関数は1を返すはずです)。mysql_affected_rows()は、実際に更新が行われた場合でもUPDATE文に対して0を返します。
$updateQuery = "UPDATE myTable SET foo=1 WHERE bar=2";
mysql_query($updateQuery);
if (mysql_affected_rows() > 0) {
echo "affected!";
}
else {
echo "not affected"; // always prints not affected
}
UPDATEステートメント自体が動作します。 INTは私のデータベースで変更されます。私はまた、データベース接続が事前に閉じられていないか、または何かがファンキーでないことを再確認しました。 mysql_affected_rowsは必ずしも接続リンク識別子を渡す必要はありませんが、私もそれを試しました。機能上の
任意のアイデア?
あなたはレコードが更新されてよろしいですか?テストを実行する前にfooを1以外の値に設定してください。 – northpole
万が一、書き換えルールのようにページが2回呼び出される可能性がありますか?これにより、データが最初に更新され、最終出力が表示されたときに2回目に更新されることはありません。Webサーバーのログを確認することは害ではありません。 –
実際に0を返していて、負の値ではないことを確認しましたか? – Jodaka