php mysql null sql-insert

MySQL y PHP-inserta NULL en lugar de una cadena vacía



mysql null insert (9)

Tengo una declaración de MySQL que inserta algunas variables en la base de datos. Recientemente agregué 2 campos que son opcionales ($ intLat, $ intLng). En este momento, si no se ingresan estos valores, paso una cadena vacía como un valor. ¿Cómo paso un valor NULL explícito a MySQL (si está vacío)?

$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng) VALUES (''$notes'', ''$id'', TRIM(''$imageUploaded''), ''$lat'', ''$long'', ''$intLat'', ''$intLng'')"; mysql_query($query);


Por alguna razón, la solución de Radhoo no funcionaría para mí. Cuando utilicé la siguiente expresión:

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

''null'' (con comillas) se insertó en lugar de nulo sin comillas, por lo que es una cadena en lugar de un entero. Así que finalmente lo intenté:

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

El espacio en blanco resultó en que se insertara el nulo correcto (sin comillas) en la consulta.


Esto funciona bien para mí:

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

(el primer '''' incrementa el campo de identificación)


Normalmente, agregas valores regulares a mySQL, desde PHP como este:

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 }

Cuando sus valores están vacíos / nulos ($ val1 == "" o $ val1 == NULL), y desea que se agregue NULL a SQL y no a 0 o cadena vacía, a lo siguiente:

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 }

Tenga en cuenta que null se debe agregar como "NULL" y no como "''NULL''". Los valores no nulos se deben agregar como "''". $ Val1. "''", Etc.

Espero que esto ayude, solo tuve que usar esto para algunos registradores de datos de hardware, algunos de ellos recogiendo temperatura y radiación, otros solo radiación. Para aquellos sin el sensor de temperatura, necesitaba NULL y no 0, por razones obvias (0 también es un valor de temperatura aceptado).


Para pasar un NULL a MySQL, haz eso.

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

Entonces, en su código, verifique if $intLat, $intLng están empty , si están, use NULL lugar de ''$intLat'' o ''$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)";


Si no pasa valores, obtendrá valores nulos para los valores predeterminados.

Pero solo puedes pasar la palabra NULL sin comillas.


Su consulta puede ir de la siguiente manera:

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


Todo lo que tienes que hacer es: $variable =NULL; // y pasarlo en la consulta de inserción. Esto almacenará el valor como NULL en mysql db


Verifique las variables antes de construir la consulta, si están vacías, cámbielas a la cadena NULL


puedes hacerlo por ejemplo con

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