質問

データベースにいくつかの変数を挿入する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);
役に立ちましたか?

解決

nullをmysqlに渡すには、まさにそれを行います。

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

したがって、コードで確認してください if $intLat, $intLng それは empty, 、もしそうなら、使用してください NULL それ以外の '$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)";

他のヒント

値を渡さない場合、デフォルトのヌルが表示されます。

ただし、引用せずにnullという単語を渡すことができます。

これは私にとってうまく機能します:

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

(最初 '' IDフィールドを増やす)

あなたがしなければならないのは: $variable =NULL; //挿入クエリに渡します。これにより、値はmysql dbにnullとして保存されます

通常、このような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)であり、nullを0または空の文字列ではなく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は温度値も受け入れられます)。

あなたのクエリは次のように進むことができます:

$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);

クエリを構築する前に変数を確認してください。それらが空の場合は、文字列nullに変更します

たとえば、それを行うことができます

UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'

何らかの理由で、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."'")) . 
    ")";

ブランクにより、クエリに正しいヌル(引用されていない)が挿入されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top