2012-07-26 12 views
0

在简单情况下,用户输入用于使用SQL LIKE过滤数据,是否有任何特殊字符我应该注意?在处理数据时,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并因此被用于恶意目的的事情。

+0

为什么在这方面首先使用LIKE? – 2012-07-26 08:09:46

+0

因为我正在寻找名为“George Thomson”的名字,只给出“George”和类似案例。 – Gajus 2012-07-26 08:11:10

+0

啊,我现在明白了。是的,在这种情况下,在输入中去掉'%'和'_'是有意义的 – 2012-07-26 08:13:36

回答

1

你需要关心的$输入,它将包含逗号标记或引号

+1

当使用参数查询时 – 2012-07-26 08:19:11