在清理数据时,SQL LIKE查询是否需要特别注意?

时间:2012-07-26 08:08:11

标签: php mysql sql pdo

在简单的场景中,用户输入用于使用SQL LIKE过滤数据,是否有任何特殊字符我应该注意?

$input  = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

// Should I strip characters like '%'?

$sth    = $db->prepare("SELECT `id` FROM `names` WHERE `name` LIKE :name");
$sth->execute(['name' => $input . '%']);

我指的是任何可能会大大减慢查询速度/消耗CPU并因此用于恶意目的的事情。

2 个答案:

答案 0 :(得分:1)

你需要关心 $ input ,它会包含逗号或引号

答案 1 :(得分:1)

您应该转义用于通配符匹配的字符。

有关此操作的详细讨论,请参阅Escaping MySQL wild cards