[php] MySQL 및 PHP-빈 문자열 대신 NULL 삽입

데이터베이스에 몇 가지 변수를 삽입하는 MySQL 문이 있습니다. 최근에 선택적 필드 ($ 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사용하십시오 .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이 표시됩니다.

그러나 따옴표없이 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
}

값이 비어 있거나 널 ($ val1 == “”또는 $ val1 == NULL)이고 NULL을 SQL에 추가하고 0 또는 빈 문자열이 아닌 다음 항목에 추가하려는 경우 :

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”로 추가되어야합니다. 널이 아닌 값은 ” ‘”. $ 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 문자열로 변경하십시오.