Ik wil een NULL value inserten in een database. Hoe doe ik dat. Ik weet dat VALUES(NULL) een optie is, maar ik gebruik variabelen. Dus ik wil een VALUE($variabele) inserten en die moet NULL kunnen zijn. Hoe doe ik dat of kan dit niet ?
Ik heb al $variabele="\n" of "NULL" of NULL geprobeerd, maar geen daarvan werkt. Moet ik dan ingewillelede IF statements gaan maken die dan de NULL value gaan regelen ?
$var = null;
dat werkt volgens mij wel in php
heb ik geprobeerd...werkt niet.
Dit is een stuk uit mijn code:
<?php
$afstand = 12;
$gemiddelde = 12;
$maximum = 12;
mysql_select_db($daba) or die( "Unable to select database");
$SQLcommand = "INSERT INTO fietslog (afstand,gemiddelde,maximum) VALUES ('$afstand','$gemiddelde','$maximum')" ;
if(mysql_db_query($daba, $SQLcommand, $db) )
mysql_close($db) ;
?>

Nu is het zo dat de waarden $afstand, $gemiddelde en $maximum ook leeg dus NULL moeten kunnen zijn. Ik wil er dan in de database geen 0 hebben of zo, maar helemaal niets, blanko dus, NULL dus.
Ik denk dat het dan komt omdat je quotes bij het invoeren hebt. En echo maar eens $afstand als je hem op null hebt ingesteld, dan krijg je niets te zien. Je query zal dan inderdaad '' (een lege string) invoeren.

je zou een functie kunnen maken, die even snel controlleerd of iets echt null is, en deze var de string 'NULL' mee geven.
<?php
function convert_null($variabele){
if($variabele == null){
$variabele = 'NULL';
}
return $variabele;
}
?>

PS: bij integers moet je geen quotes gebruiken, ook niet bij het invoeren in de database.
jammer....dat werk ook niet....je moet blijkbaar echt de tekst NULL opnemen in je INSERT statement. Met een variabele blijkbaar niet te doen.

Dus was nu mijn test script:

// controleer de NULL waarden van $afstand, $maximum en $gemiddelde
convert_null($afstand);
convert_null($maximum);
convert_null($gemiddelde);

mysql_select_db($daba) or die( "Unable to select database");

$SQLcommand = "INSERT INTO fietslog (afstand,maximum,gemiddelde) VALUES ($afstand, $maximum, $gemiddelde)" ;

// ************** FUNCTIONS *********************
function convert_null($variabele){
if($variabele == null){
$variabele = 'NULL';
}
return $variabele;
}
?>

Misschien dat hij zo beter werkt:
function convert_null($variabele){
if(empty($variabele)){
$variabele = 'NULL';
}
return $variabele;
}
Misschien moet ik een INSERT doen van alle velden die ik wil inserten behalve de 3 die NULL moeten kunnen zijn...en daarna een UPDATE uitvoeren van die 3 apart. Dan kan de update uitgevoerd worden als ze NIET NULL zijn.

Een optie ?
Is er een ID uit te lezen bij een INSERT, zodat ik exact de juiste entry ga UPDATEN ?
Jelmer: De 2e functie werkt ook niet, want de waarde mag bij een INSERT gewoon niet 'NULL' zijn.
Er mogen geen enkele quotes omheen staan.
Het mag en moet blijkbaar NULL zijn. Met niets eromheen en rechtstreeks in de INSERT opdracht.
Die quotes zouden niet in de query moeten worden opgenomen. Ze komen niet eens in de variabele te staan, ze zijn nodig om aan te geven dat het een string is.

Misschien is het een idee om de velden die je niet invult standaard op null in te laten stellen.

En dat wat je zocht, is mysql_insert_id();
Ik denk dat ik mysql_insert_id(); maar ga gebruiken.
Ik doe dan dus eerst een INSERT van alle values behalve $afstand,$maximum en $gemiddelde.
Dan een mysql_insert_id();
Dan een UPDATE van de 3 velden als deze niet empty zijn. Dan ben ik er denk ik, want de tabel is ingesteld dat een niet opgevoerde waarde standaard NULL wordt.
Wel omslachtig....maar ja....zo kom ik er ook..denk ik :-)
Volgens mij moet dit wel gaan werken...toch ?

<?php

//$SQLcommand = "INSERT INTO fietslog (datum,titel,metwie,omschrijving) VALUES ('$datum', '$titel', '$metwie', '$omschrijving')";
//if !(empty($afstand)) $result = mysql_query("UPDATE fietslog SET afstand='$afstand' WHERE id='mysql_insert_id()'") or die(mysql_error());
//if !(empty($maximum)) $result = mysql_query("UPDATE fietslog SET maximum='$maximum' WHERE id='mysql_insert_id()'") or die(mysql_error());
//if !(empty($gemiddelde)) $result = mysql_query("UPDATE fietslog SET gemiddelde='$gemiddelde' WHERE id='mysql_insert_id()'") or die(mysql_error());
?>

Reageren