在审核了这个SO之后,我在使用预准备语句时遇到了一些麻烦。
我已将以下内容添加到我的数据库连接中:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
以下是我的查询声明:
$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id
FROM schedules
INNER JOIN users
ON schedules.admin_id=users.user_id
WHERE schedules.schedule_name
LIKE '%:search%'
ORDER BY schedules.schedule_name";
$stmt = $db->prepare($query);
$result = $stmt->execute(array('search' => $search_string));
$search_results = $stmt->fetchAll();
正如您在LIKE中看到的,我正在尝试替换:在执行查询时搜索但似乎没有被替换。
答案 0 :(得分:0)
当您进行参数化查询时,它不仅仅是字符串替换,并且您不用单引号将其包围:
$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id
FROM schedules
INNER JOIN users
ON schedules.admin_id=users.user_id
WHERE schedules.schedule_name
LIKE :search
ORDER BY schedules.schedule_name";
但是你希望这个词周围有%
个通配符吗?注入时添加它们:
$result = $stmt->execute(array('search' => '%' . $search_string . '%' ));