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

标签 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

但是,当我尝试绑定(bind) $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),我真的看不出我做错了什么。

最佳答案

绑定(bind)变量时,不要使用引号。

关于php - PDO 绑定(bind)值不起作用(WHERE LIKE 语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726597/

相关文章:

php - 从 mysql 提供数据的最佳方式

php - 用 PHP 计算总平均评分

php - 尝试检索数据库表时 PDO 错误

php - 为什么php框架限制url字符

php - 如何从等于当前日期的 PHP 和 MySQL 数据库中获取日期?

php - 为什么这个语法有效?

javascript - 传递参数以及为 MYSQL 集成准备代码时出现问题

Mysql 和 case 语句不起作用

php - 本地服务器和在线服务器具有相同的时间戳但结果不同 Mysql-Php

php - PHP 的 PDO 是否可以限制为单个查询?