データベースにいくつかの変数を挿入するMySQLステートメントがあります。最近、オプションの2つのフィールド($ intLat、$ intLng)を追加しました。現在、これらの値が入力されていない場合、空の文字列を値として渡します。明示的なNULL値をMySQLに渡す方法(空の場合)
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
MySQLにNULLを渡すには、まさにそれを行います。
INSERT INTO table (field,field2) VALUES (NULL,3)
したがって、コードでif $intLat, $intLng
がempty
である場合は、'$intLat'
または'$intLng'
の代わりにNULL
を使用してください。
$intLat = !empty($intLat) ? "'$intLat'" : "NULL";
$intLng = !empty($intLng) ? "'$intLng'" : "NULL";
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
$intLat, $intLng)";
値を渡さないと、デフォルトとしてnullが返されます。
ただし、引用符なしでWord NULLを渡すことができます。
これは私にとってはうまくいきます:
INSERT INTO table VALUES ('', NULLIF('$date',''))
(最初の''
はidフィールドをインクリメントします)
必要なことは、$variable =NULL;
//で、それを挿入クエリで渡します。これにより、値がNULLとしてmysql dbに保存されます
通常、次のようにPHPからmySQLに通常の値を追加します。
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES ('$val1', '$val2')";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
値が空/ null($ val1 == ""または$ val1 == NULL)で、0または空の文字列ではなく、SQLに次のようにNULLを追加する場合:
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
Nullは、「 'NULL'」ではなく「NULL」として追加する必要があることに注意してください。 NULL以外の値は、「 '」。$ val1。 "'"などとして追加する必要があります。
これが役立つことを願って、ハードウェアデータロガーの一部にこれを使用しなければなりませんでした。一部のハードウェアデータロガーは温度と放射線を収集し、他は放射線のみを収集します。温度センサーがない場合、明らかな理由で、0ではなくNULLが必要でした(0も許容温度値です)。
クエリは次のようになります。
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$lng', '" . ($lat == '')?NULL:$lat . "', '" . ($long == '')?NULL:$long . "')";
mysql_query($query);
何らかの理由で、radhooのソリューションはうまくいきません。次の式を使用した場合:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
'null'(引用符付き)が引用符なしのnullの代わりに挿入され、整数ではなく文字列になりました。だから私は最終的に試しました:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')? :("'".$val1."'")) . ", ".
(($val2=='')? :("'".$val2."'")) .
")";
空白の結果、クエリに正しいnull(引用符なし)が挿入されました。
クエリを作成する前に変数を確認し、空の場合は文字列NULLに変更します
あなたはそれを例えばすることができます
UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'