PDO bindvalue не работает (оператор WHERE LIKE) - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь использовать оператор LIKE для поиска по ряду столбцов.

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

$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), я действительно не вижу, что я сделал неправильно.

1 Ответ

4 голосов
/ 15 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...