Insert NULL value in MySQL database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Johan

Johan

19/08/2005 10:34:00
Quote Anchor link
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 ?
 
PHP hulp

PHP hulp

24/11/2024 03:42:52
 
Jelmer -

Jelmer -

19/08/2005 10:58:00
Quote Anchor link
$var = null;
dat werkt volgens mij wel in php
 
Johan

Johan

19/08/2005 11:06:00
Quote Anchor link
heb ik geprobeerd...werkt niet.
Dit is een stuk uit mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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) ;
?>


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.
 
Jelmer -

Jelmer -

19/08/2005 11:44:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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.
 
Johan

Johan

19/08/2005 11:59:00
Quote Anchor link
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;
}
?>
 
Jelmer -

Jelmer -

19/08/2005 12:26:00
Quote Anchor link
Misschien dat hij zo beter werkt:
function convert_null($variabele){
if(empty($variabele)){
$variabele = 'NULL';
}
return $variabele;
}
 
Johan

Johan

19/08/2005 12:33:00
Quote Anchor link
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 ?
 
Johan

Johan

19/08/2005 12:35:00
Quote Anchor link
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.
 
Jelmer -

Jelmer -

19/08/2005 12:44:00
Quote Anchor link
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();
 
Johan

Johan

19/08/2005 12:49:00
Quote Anchor link
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 :-)
 
Johan

Johan

19/08/2005 13:27:00
Quote Anchor link
Volgens mij moet dit wel gaan werken...toch ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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());

?>
 
Frisbee

Frisbee

19/08/2005 13:38:00
Quote Anchor link
volgens mij werkt het bij mysql ook als je 0 invoert.

dus zoiets:

"INSERT INTO fietslog (afstand,gemiddelde,maximum) VALUES (0,0,0)";
 
Johan

Johan

19/08/2005 13:45:00
Quote Anchor link
dan kan wel zo zijn, maar hoe krijg je die 0 in een variabele...dat is het probleem wat niet gaat, want als je een variablele gebruikt in de INSERT, dan moeten er ' ' omheen staan en dan is het weer geen NULL of 0.
jammergenoeg....
 
Frisbee

Frisbee

19/08/2005 13:51:00
Quote Anchor link
om integers (getallen) en variabelen hoef je geen quotes te zetten. dat hoeft alleen bij strings.

je moet je variabelen juist buiten de quotes houden. op deze manier dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$afstand
= 0;
$gemiddelde = 0;
$maximum = 0;

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

?>
 
Frisbee

Frisbee

19/08/2005 13:53:00
Quote Anchor link
Wat ik hierboven doe kan dus alleen wanneer er een integer in de variabelen zit. wanneer het een string is moet je dus weer enkele quotes er omheen zetten. zo dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 . "')";

?>


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
 
Johan

Johan

19/08/2005 13:59:00
Quote Anchor link
ik ga het proberen en je hoort mijn uitslag of het wel/niet werkt....
Bedankt voor alle reacties to nu toe.
Erg leerzaam.
 
Johan

Johan

19/08/2005 14:17:00
Quote Anchor link
getest....

"INSERT INTO fietslog (afstand,gemiddelde,maximum) VALUES (0,0,0)";

levert geen NULL values op...
 
Frisbee

Frisbee

19/08/2005 14:45:00
Quote Anchor link
jammer.. dan zou ik het ook niet meer weten :(
 
Frisbee

Frisbee

19/08/2005 14:55:00
Quote Anchor link
ik heb het even getest. bij mij werkte het alleen op de manier die jelmer al noemde:

$variable = 'NULL';

dan komt er gewoon NULL in de database. heb je bij je velden wel ingesteld dat ze NULL mogen zijn?
 
Johan

Johan

19/08/2005 15:10:00
Quote Anchor link
Veld Type Attributen Null Standaardwaarde Extra Actie
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:
 
- SanThe -

- SanThe -

19/08/2005 15:36:00
Quote Anchor link
Als je een insert doet met alleen bijvoorbeeld de datum, dan worden de andere waarden automatisch null.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.