Er wordt nl. geadviseerd om ook int variabelen tussen enkele quot's te zetten.
Dus niet
<?php
$query_hok_toevoegen= "INSERT INTO tblHok SET lidId = ".mysqli_real_escape_string($db,$lidId).", hoknr = '".mysqli_real_escape_string($db,$hok)."', scan = ".mysqli_real_escape_string($db,$insscan)." ";
?>
maar
<?php
$query_hok_toevoegen= "INSERT INTO tblHok SET lidId = '".mysqli_real_escape_string($db,$lidId)."', hoknr = '".mysqli_real_escape_string($db,$hok)."', scan = '".mysqli_real_escape_string($db,$insscan)."' ";
?>
Wat nu als de variabele leeg is of niet bestaat. Ik wil dan niet '' naar mijn database sturen maar NULL.
dus niet
INSERT INTO tblHok SET lidId = '5', hoknr = 'Hok 04', scan = '';
en (juist) ook niet
INSERT INTO tblHok SET lidId = '5', hoknr = 'Hok 04', scan = 'NULL';
maar
INSERT INTO tblHok SET lidId = '5', hoknr = 'Hok 04', scan = NULL;
Door de enkele quote's komt NULL als een string in de tabel i.p.v. een leeg veld.
Nu weet ik ook weer waarom ik niet alleen integer velden maar juist ook lege velden oplos zoals de eerste query hierboven maar dat terzijde.
Hoe krijg ik NULL naar mijn tabellen en voorkom ik tegelijkertijd SQL-injection ?
Alles wat ik op internet vind leidt niet tot een antwoord op deze vraag.
Wat ik op internet vind leidt meestal tot deze output : INSERT INTO tblHok SET lidId = '5', hoknr = 'Hok 04', scan = '';