私はMySQLクエリを実行するPHPスクリプトを持っています。ここでIFFTをMySQLのON DUPLICATE KEY UPDATEで使用する
$query = "INSERT INTO table (col1, col2)
VALUES('$val1', '$val2')
ON DUPLICATE KEY UPDATE col2= IF(IS NOT NULL '$val1', 'test', 'col2)";
は私がしようとしているものです: のCol1は主キーです。重複がある場合、col2の挿入値がNULLかどうかを確認します。そうでない場合は、値で更新されます。そうでない場合、値は変わりません。
この挿入は失敗します。 NULL比較がされていないため、私はMySQLのリファレンスマニュアルをチェックした1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NOT NULL.....'
: エラーコード:私はSQLyogの中に手動でそれを実行しようとすると(変数の代わりに実際の値を挿入する)、私は次のエラーを取得します演算子(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_is-not-null)、INSERT ... ON DUPLICATE KEY UPDATE構文(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)に対しても、正しく両方を使用していると信じていますが、明らかにそうではありません。
私は間違っていますか?
参考までに、私はMySQL 5を使用しており、スクリプトはRHEL5サーバー上で実行されています。
あなたの助けをありがとうございました!また、「テスト」の値は見落としであった。これはテスト時にcol2に使用していた値で、削除するのを忘れてしまった。 –