Hallootjes, ik heb dit stukje script:
$naam = $vb->quote($_POST['naam']);
$is_already = $vb->exec("SELECT COUNT(id) FROM users WHERE naam = '".$naam."'")or die(print_r($vb->errorInfo()));

en ik krijg de error:
Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hoi''' at line 1 ) 1

$naam heb ik opgegeven als hoi,en als ik het echo zie ik 'hoi'

Vast bedankt
Als je hier kijkt: http://nl3.php.net/manual/nl/function.PDO-quote.php, zie je dat de quote functie er quotes omheen zet.

Maar nu heb je om $naam ook al quotes. Nu zal je dubbele quotes krijgen.
En dat geeft dus een error...

moet dus zo
<?php
$is_already = $vb->exec("SELECT COUNT(id) FROM users WHERE naam = ".$naam)or die(print_r($vb->errorInfo()));
?>

hoezo gebruik je eigenlijk 'or die()'?
Als je pdo kunt gebruiken, kan je ook exeptions gebruiken. Dit is veeel netter ;)
Het is altijd handig om eerst je query te maken en dan pas uit te voeren, dan kun je die bij een eventuele error ook weergeven.

<?php
$naam = $vb->quote($_POST['naam']);
$query = "SELECT COUNT(id) FROM users WHERE naam = '".$naam."'";
$is_already = $vb->exec()or die(print_r($vb->errorInfo().PHP_EOL.$query));
?>
Daarnaast is het niet slim om exec() in combinatie met een SELECT query te gebruiken. Deze methode geeft namelijk alleen het aantal affected rows terug. Voor een SELECT query hoor je query() te gebruiken...

Reageren