INSERT INTO ... ON DUPLICATE KEY UPDATE ... などの SQL ステートメントを実行するときtable
、挿入または更新が実行されたかどうかを判断するために mysql_affected_rows() に依存しています。http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.htmlの mysql サイトとして、次のように述べています。
INSERT ... ON DUPLICATE KEY UPDATE ステートメントの場合、影響を受ける行の値は、行が新しい行として挿入される場合は 1、既存の行が更新される場合は 2 です。
多くのクエリで mysql_affected_rows() が MINUS ONE (-1) を返すようになった MySQL 5.1.16 にアップグレードするまで、すべて正常に機能していました。
http://dev.mysql.com/doc/refman/5.1/en/mysql-store-result.htmlの MySQL サイトで提案されている解決策は、関数 mysql_query() を実行するたびに関数 mysql_store_result() を呼び出すことです。選択クエリで。
ただし、PHP にはそのような関数が定義されていないようです。
PHP と MySQL 5.1.16 を使用して mysql_affected_rows() を正しく動作させるにはどうすればよいですか?