Insert NULL value in MySQL database
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 ?
dat werkt volgens mij wel in php
Dit is een stuk uit mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?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) ;
?>
$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.
je zou een functie kunnen maken, die even snel controlleerd of iets echt null is, en deze var de string 'NULL' mee geven.
Code (php)
PS: bij integers moet je geen quotes gebruiken, ook niet bij het invoeren in de database.
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;
}
?>
function convert_null($variabele){
if(empty($variabele)){
$variabele = 'NULL';
}
return $variabele;
}
Een optie ?
Is er een ID uit te lezen bij een INSERT, zodat ik exact de juiste entry ga UPDATEN ?
Er mogen geen enkele quotes omheen staan.
Het mag en moet blijkbaar NULL zijn. Met niets eromheen en rechtstreeks in de INSERT opdracht.
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 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 :-)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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());
?>
//$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());
?>
dus zoiets:
"INSERT INTO fietslog (afstand,gemiddelde,maximum) VALUES (0,0,0)";
jammergenoeg....
je moet je variabelen juist buiten de quotes houden. op deze manier dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$afstand = 0;
$gemiddelde = 0;
$maximum = 0;
$naam = 'pietje';
$query = "INSERT INTO fietslog (afstand,gemiddelde,maximum,naam) VALUES (" . $afstand . "," . $gemiddelde . "," . $maximum . ",'" . $naam . "')";
?>
$afstand = 0;
$gemiddelde = 0;
$maximum = 0;
$naam = 'pietje';
$query = "INSERT INTO fietslog (afstand,gemiddelde,maximum,naam) VALUES (" . $afstand . "," . $gemiddelde . "," . $maximum . ",'" . $naam . "')";
?>
edit: je ziet het hierboven een beetje onduidelijk maar voor $naam staat eerst een enkele quote dan een dubbele. er achter staat dus juist eerst een dubbele en dan een enkele.
Gewijzigd op 19/08/2005 13:55:00 door Frisbee
Bedankt voor alle reacties to nu toe.
Erg leerzaam.
"INSERT INTO fietslog (afstand,gemiddelde,maximum) VALUES (0,0,0)";
levert geen NULL values op...
jammer.. dan zou ik het ook niet meer weten :(
$variable = 'NULL';
dan komt er gewoon NULL in de database. heb je bij je velden wel ingesteld dat ze NULL mogen zijn?
id int(11) Nee auto_increment
datum date Nee 0000-00-00
titel varchar(100) Nee
omschrijving text Nee
afstand float Ja NULL
maximum float Ja NULL
gemiddelde float Ja NULL
metwie text Nee
Selecteer alles / Deselecteer alles Met geselecteerd:
Als je een insert doet met alleen bijvoorbeeld de datum, dan worden de andere waarden automatisch null.