INSERT variabele = 'NULL'
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
require 'php/db_connect.php';
$een = 2;
$twee = 2;
$drie = NULL;
$data_insert = "INSERT INTO test (een, twee, drie)
VALUES ('$een','$twee', '$drie')";
$result = mysql_query($data_insert) or die (mysql_error());
?>
require 'php/db_connect.php';
$een = 2;
$twee = 2;
$drie = NULL;
$data_insert = "INSERT INTO test (een, twee, drie)
VALUES ('$een','$twee', '$drie')";
$result = mysql_query($data_insert) or die (mysql_error());
?>
Mijn tabel is als volgt:
CREATE TABLE `test` (
`ID` int(11) NOT NULL auto_increment,
`een` decimal(5,1) default NULL,
`twee` decimal(5,1) default NULL,
`drie` decimal(5,1) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Omdat de ene keer de ene variabele geen waarde heeft en de andere keer een ander is het niet mogelijk om slechts 1 of 2 van de 3 te inserten en de kolom die NULL moet zijn weg te laten. Maar een variabele op NULL instellen en dan inserten geeft ook geen NULL in mijn tabel. Is het wel mogelijk met een variabele?
Lijkt mij het meest logisch?
Nee, dat werkt niet... Dan staat er nog gewoon 0,0 in mijn tabel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$een = 2;
$twee = 2;
$drie = NULL;
$query = "INSERT INTO test
(een, twee, drie)
VALUES
('".$een."', '".$twee."', ".$drie.")";
$result = mysql_query($query);
if($result) {
// goed uitgevoerd
} else {
// niet goed uitgevoerd, mysql_error()
}
?>
$een = 2;
$twee = 2;
$drie = NULL;
$query = "INSERT INTO test
(een, twee, drie)
VALUES
('".$een."', '".$twee."', ".$drie.")";
$result = mysql_query($query);
if($result) {
// goed uitgevoerd
} else {
// niet goed uitgevoerd, mysql_error()
}
?>
Nee, ook dat werkt niet... Zit zelf te denken aan een array met de kolommen als key en de variabelen als waarde... maar weet nog even niet hoe.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require 'php/db_connect.php';
$row = array(3,NULL,1);
$array = array(array(",een", "$row[0]"), array(",twee", ",$row[1]"), array(",drie", ",$row[2]"));
$nr = count($row);
for($i=0;$i<$nr;$i++)
{
if($row[$i] == NULL)
{
unset($array[$i]);
}
}
$kolom = trim($array[0][0] . $array[1][0] . $array[2][0],",");
$values = trim($array[0][1] . $array[1][1] . $array[2][1],",");
$query= "INSERT INTO test ($kolom) VALUES($values)";
$result = mysql_query($query) or die(mysql_error());
if($result) {
echo "ja, gelukt";
} else {
echo "nee, niet gelukt omdat: " . mysql_error();
}
?>
require 'php/db_connect.php';
$row = array(3,NULL,1);
$array = array(array(",een", "$row[0]"), array(",twee", ",$row[1]"), array(",drie", ",$row[2]"));
$nr = count($row);
for($i=0;$i<$nr;$i++)
{
if($row[$i] == NULL)
{
unset($array[$i]);
}
}
$kolom = trim($array[0][0] . $array[1][0] . $array[2][0],",");
$values = trim($array[0][1] . $array[1][1] . $array[2][1],",");
$query= "INSERT INTO test ($kolom) VALUES($values)";
$result = mysql_query($query) or die(mysql_error());
if($result) {
echo "ja, gelukt";
} else {
echo "nee, niet gelukt omdat: " . mysql_error();
}
?>
Dit is wat omslachtig, maar werkt wel...
Je manier is zeker omslachtig. Dit ga je toch niet serieus op deze manier oplossen? Je kunt gewoon een query maken.
@Brie: dat werkt natuurlijk niet want op deze manier maak jij er een string van! Null is een waarde, of beter gezegd, geen waarde. Het verwijst naar niets. Er is gewoon helemaal niets..!
De tabel waar het om gaat heet ook geen test. Dat was alleen in dit voorbeeld. Ik zou eigenlijk niet weten hoe ik het anders op moet lossen. Ik ben al bezig, heb alleen 36 kolommen...
Quote:
Dat is niet nodig, een NULL staat er namelijk al. NULL geeft aan dat er geen waarde is en kijk maar eens goed, er staat niks in je niet-bestaande record. Nog meer niks opslaan, is overbodig.Ik wil met een variabele NULL inserten in mijn database.
Kortom, sla niet niks op wanneer je niks wilt opslaan. Snap je het nog? Zo niet, laat de kolomnaam weg van de kolom waar je niks in wilt zetten en zet geen NULL meer in de query, nergens voor nodig.
En NULL is natuurlijk geen string en staat dus nooit tussen quotes of andere rommel.
mààr, ik wil gegevens uit een txt bestand inserten waarin op sommige regels geen waarde (---) staat voor een bepaalde kolom... En dan zou er dus '---' worden geinsert bij een Type DECIMAL kolom wat resulteert in de waarde 0,0. Maar ik wil dus gewoon NULL....
INSERT INTO test (een, drie) VALUES ('een','drie');
Zoals Frank al zei, je laat die kolom waar jij NULL in wil hebben gewoon weg...
En ben je echt eigenwijs en wil je het beter weten dan Frank, doe dan zo:
INSERT INTO test (een, twee, drie) VALUES ('een', NULL, 'drie');