PDO绑定值不起作用(WHERE LIKE语句)

时间:2012-03-15 19:16:46

标签: php mysql pdo

我正在尝试使用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 个答案:

答案 0 :(得分:4)

绑定变量时,请勿使用引号。