source

MySQL 및 PHP - 빈 문자열 대신 NULL을 삽입합니다.

factcode 2022. 9. 29. 00:09
반응형

MySQL 및 PHP - 빈 문자열 대신 NULL을 삽입합니다.

데이터베이스에 변수를 삽입하는 MySQL 문이 있습니다.최근 옵션($intLat, $intLang)인 2개의 필드를 추가했습니다.이 값을 입력하지 않으면 빈 문자열을 값으로 전달합니다.명시적 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)";

이 정도면 충분합니다.

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

(처음''[ Increments id ]필드)

값을 전달하지 않으면 기본값에 대해 null이 표시됩니다.

그러나 NULL이라는 단어는 따옴표 없이 전달할 수 있습니다.

필요한 것은 다음과 같습니다.$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을 SQL에 추가하고 0이나 빈 문자열이 아닌 다음 항목에 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);

쿼리를 작성하기 전에 변수를 확인하고 비어 있는 경우 NULL 문자열로 변경합니다.

예를 들어 다음과 같이 할 수 있습니다.

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

무슨 이유에선지, 라두의 해결책은 나한테는 통하지 않을 거야.다음 표현을 사용했을 때:

$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
    (($val1=='')?"NULL":("'".$val1."'")) . ", ".
    (($val2=='')?"NULL":("'".$val2."'")) . 
    ")";

따옴표 없이 null 대신 'squots'(따옴표 포함)가 삽입되어 정수 대신 문자열이 되었습니다.그래서 마침내 시도했다:

$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
    (($val1=='')? :("'".$val1."'")) . ", ".
    (($val2=='')? :("'".$val2."'")) . 
    ")";

공백으로 인해 쿼리에 올바른 늘(따옴표 없음)이 삽입되었습니다.

2022 | PHP 7.3 | MySQL 5.7

Rocket Hazmat의 대답은 끈으로 "NULL"을 줍니다.그래서 다음과 같이 변경합니다.

$intLat = !empty($intLat) ? "'$intLat'" : NULL;
$intLng = !empty($intLng) ? "'$intLng'" : NULL;

언급URL : https://stackoverflow.com/questions/4620391/mysql-and-php-insert-null-rather-than-empty-string

반응형