2012-03-15 2 views
1

Я пытаюсь использовать оператор LIKE для поиска по нескольким столбцам.PDO bindvalue не работает (WHERE LIKE statement)

Следующий код дает желаемый результат:

$zoek='%'.$_GET['zoek'].'%'; 
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

//insert the user: 
$sql = "SELECT `leerlingnr`,`voornaam`,`achternm_tsnvoegsels`,`klas` 
FROM `roosters` 
WHERE `leerlingnr` LIKE '$zoek' 
OR `voornaam` LIKE '$zoek' 
OR `achternm_tsnvoegsels` LIKE '$zoek' 
OR `klas` LIKE '$zoek'"; 
$st = $conn->prepare ($sql); 
$st->execute(); 
var_dump ($st -> fetchAll ()) ; 
$conn = null;//sluit de connectie 

Однако, когда я пытаюсь связать значение $zoek, вместо того, чтобы просто вставить его в запросе, я получаю 0 результатов.

$zoek='%'.$_GET['zoek'].'%'; 
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

//insert the user: 
$sql = "SELECT `leerlingnr`,`voornaam`,`achternm_tsnvoegsels`,`klas` 
FROM `roosters` 
WHERE `leerlingnr` LIKE ':zoekterm1' 
OR `voornaam` LIKE ':zoekterm2' 
OR `achternm_tsnvoegsels` LIKE ':zoekterm3' 
OR `klas` LIKE ':zoekterm4'"; 
$st = $conn->prepare ($sql); 
$st->bindValue(':zoekterm1', $zoek, PDO::PARAM_STR); 
$st->bindValue(':zoekterm2', $zoek, PDO::PARAM_STR); 
$st->bindValue(':zoekterm3', $zoek, PDO::PARAM_STR); 
$st->bindValue(':zoekterm4', $zoek, PDO::PARAM_STR); 
$st->execute(); 
var_dump ($st -> fetchAll ()) ; 
$conn = null;//sluit de connectie 

После попытки около получаса (я исправил, имеющий% в запросе и имеющий только один :zoekterm), я действительно не понимаю, что я сделал неправильно.

ответ

4

При привязке переменных не используйте кавычки.

+0

А, это исправление. Спасибо! – Boelensman1

Смежные вопросы