Waarde NULL is niet NULL in tabel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$afbeelding = $afbeeldinglocatie.$safe_filename;
$banner = NULL;
// De INSERT opdracht voor afbeeldingen in tabel PROJECTAFBEELDINGEN
$Opdracht = "INSERT INTO PROJECTAFBEELDINGEN SET
ID = '0',
BANNER = '".mysql_real_escape_string($banner)."',
IMG = '".mysql_real_escape_string($afbeelding)."'
";
?>
$afbeelding = $afbeeldinglocatie.$safe_filename;
$banner = NULL;
// De INSERT opdracht voor afbeeldingen in tabel PROJECTAFBEELDINGEN
$Opdracht = "INSERT INTO PROJECTAFBEELDINGEN SET
ID = '0',
BANNER = '".mysql_real_escape_string($banner)."',
IMG = '".mysql_real_escape_string($afbeelding)."'
";
?>
Als ik daarna een select query op de tabel doe dan blijkt, in bovenstaand geval, BANNER toch niet NULL te zijn waardoor ik onverwacht toch resultaat heb met niks!
De velden IMG en BANNER zijn beide VARCHAR(250) UTF8_bin NULL default NULL
De query: "SELECT BANNER, TITEL, LINK FROM PROJECTAFBEELDINGEN WHERE PROJECTID = '".mysql_real_escape_string($PROJECT['ID'])."' AND BANNER IS NOT NULL"
Wat zie ik over het hoofd?
En gebruik standaard sql, daar heb je meer plezier aan.
Dus:
INSERT INTO tabel (a,b) VALUES (1,NULL);
UPDATE tabel SET b = NULL WHERE a = 1;
En nu maar hopen dat je in de gaten hebt wat je fout doet.
Vanzelfsprekend zijn er meerdere wegen naar ehm... mysql
Gewijzigd op 10/02/2011 21:53:13 door Aad B
in verkeerde webpagina
Gewijzigd op 10/02/2011 21:47:22 door thomas de vries
Toevoeging op 10/02/2011 21:51:49:
@Aad.. dat is wat ik bedoelde en wilde weten!
Dank voor jullie reacties!
Wat doet '".mysql_real_escape_string($banner)."' met de PHP constante NULL en is het resultaat daarvan compatible met de MySQL NULL?
Komt nog bij, als je NULL in een SQL string wil zetten, mag die niet tussen aanhalingstekens (' of ") staan.
Als je PDO gebruikt, met prepared statements, wordt dit probleem opgevangen.
Bij PDO zet je geen ' of " in de SQL string.
bv.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql = "
INSERT INTO berichten
(nickname, tekst, tijd, ip)
VALUES
(:nickname, :tekst, :tijd, :ip);";
?>
$sql = "
INSERT INTO berichten
(nickname, tekst, tijd, ip)
VALUES
(:nickname, :tekst, :tijd, :ip);";
?>
Daarna bind je variabelen aan die :nickname, :tekst, ...
En je bent nog eens automatisch beschermd tegen injection.
O ja, voor ik het vergeet (Edit: maar ik lees net dat het al ergens is gezegd):
ik merk op dat je een misse syntax gebruikt voor INSERT.
Je gebruikt INSERT zoals je UPDATE moet gebruiken.
Gewijzigd op 11/02/2011 09:55:28 door Kris Peeters