99

データベースにいくつかの変数を挿入する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);
4

9 に答える 9

157

NULLをMySQLに渡すには、まさにそれを行います。

INSERT INTO table (field,field2) VALUES (NULL,3)

したがって、コードで、またはの代わりに使用するかどうかをif $intLat, $intLng確認してください。emptyNULL'$intLat''$intLng'

$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)";
于 2011-01-06T22:03:24.663 に答える
24

これは私にとっては問題なく機能します:

INSERT INTO table VALUES ('', NULLIF('$date',''))

(最初に''idフィールドをインクリメントします)

于 2016-12-08T13:45:59.610 に答える
18

値を渡さないと、デフォルトでnullが発生します。

ただし、引用符なしでNULLという単語を渡すことができます。

于 2011-01-06T22:04:08.303 に答える
13

あなたがしなければならないのは:$variable =NULL;//そしてそれを挿入クエリに渡すことだけです。これにより、値がmysqldbにNULLとして格納されます

于 2016-05-06T08:39:42.557 に答える
4

通常、次のように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または空の文字列ではなくNULLをSQLに追加する場合は、次のようにします。

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は許容される温度値でもあります)。

于 2013-10-10T14:32:17.813 に答える
2

クエリは次のようになります。

$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);
于 2011-01-06T22:08:03.990 に答える
1

クエリを作成する前に変数を確認してください。変数が空の場合は、文字列NULLに変更してください。

于 2011-01-06T22:04:09.017 に答える
1

あなたは例えばでそれを行うことができます

UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
于 2013-07-12T19:19:11.470 に答える
1

何らかの理由で、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(引用符で囲まれていない)がクエリに挿入されました。

于 2014-03-08T09:18:20.977 に答える