Impostare il valore su NULL in MySQL


133

Voglio impostare un valore NULLse non viene inserito nulla nella casella di testo nel modulo che sto inviando. Come posso farlo accadere? Ho provato a inserire 'NULL'ma questo aggiunge semplicemente la parola NULLnel campo.

Non sono sicuro di quale codice dovrei fornire per questo, sto solo scrivendo una query UPDATE.


12
Dovrai inserire la parola null senza virgolette ..
Mike Christensen,

Risposte:


269

Non inserire NULLvirgolette all'interno dell'istruzione di aggiornamento. Questo dovrebbe funzionare:

UPDATE table SET field = NULL WHERE something = something

Stesso qui: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Aggiornamento: è stata la seguente WHEREcondizione a causare il problema!
Kai Noack,

16

Probabilmente stai citando 'NULL'. NULL è una parola riservata in MySQL e può essere inserita / aggiornata senza virgolette:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;

10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''

Penso che il problema sia che sta usando: 'NULL' invece di NULL.
Nir Alfasi,

Ma, con un po 'di attenzione, questo potrebbe correggere i campi vuoti che vuoi essere nulli: P
Erenor Paz,

6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

$sql = "INSERT INTO .... VALUES ($val)";

se inserisci la 'NULL'tua query, stai semplicemente inserendo una stringa di 4 caratteri. Senza virgolette, NULLè il valore null effettivo.


5

Usa NULL(senza virgolette).

UPDATE users SET password = NULL where ID = 4

5

Dovresti inserire null, non la stringa di 'NULL'.


3

Supponendo che la colonna consenta un'impostazione nulla,

$mycolupdate = null; // no quotes

dovrebbe fare il trucco


1
... presupponendo che non si esegua il cast $mycolupdatedella stringa in una fase successiva.
Álvaro González,

2

Le risposte fornite qui sono buone ma stavo ancora lottando per pubblicare NULL e non zero nella tabella mysql.

Alla fine ho notato che il problema era nella query di inserimento che stavo usando

   $quantity= "NULL";
   $itemname = "TEST";

Fin qui tutto bene.

La mia query di inserimento era errata.

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('$quantity','$itemname')");

Ho corretto la query da leggere.

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('".$quantity."','$itemname')");

Quindi la quantità $ è al di fuori della stringa principale. La mia tabella sql ora ha accettato di registrare una quantità nulla invece di 0


Consiglierei anche di abbandonare le funzioni obsolete di mysql_ e passare a mysqli o, le mie preferenze, DOP.
muttley91,

2

Il problema che hai avuto è molto probabilmente perché mysql distingue tra null scritto in maiuscolo e null scritto in minuscolo.

Pertanto, se si utilizza un'istruzione update con null, non funzionerebbe. Se lo imposti su NULL, funzionerebbe bene.

Grazie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.