如何逃避' LIKE'自定义PDO查询中的语句

时间:2015-04-28 06:26:30

标签: php mysql oop pdo

我有一个自定义OOP查询对象,其中包含用于MySQL查询的预准备语句。问题是我有一个LIKE语句,不允许我使用预准备语句插入数据。

如何在此方案中转义数据?这是我的代码:

$search_q = !empty($search) ? "AND `title` LIKE '%?%'" : "";
$items = DB::fetch("SELECT `title` FROM `products` WHERE `active` = 1 $search_q;", array($start));

2 个答案:

答案 0 :(得分:4)

您需要将通配符匹配字符放在占位符中,而不是放在查询中,所以不要这样做:

$search = 'find this string';
$db::query("SELECT ... FROM table WHERE col LIKE '%?%' ");

你这样做:

$search = '%find this string%';
$db::query("SELECT ... FROM table WHERE col LIKE ? ");

答案 1 :(得分:0)

First result in Google serp

$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('value%'));
while ($results = $query->fetch())
{
    echo $results['column'];
}