Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在清理数据时,类似SQL的查询是否需要特别注意?_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php 在清理数据时,类似SQL的查询是否需要特别注意?

Php 在清理数据时,类似SQL的查询是否需要特别注意?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,在一个简单的场景中,使用类似SQL的用户输入来过滤数据,是否有任何特殊字符需要注意 $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(['n

在一个简单的场景中,使用类似SQL的用户输入来过滤数据,是否有任何特殊字符需要注意

$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并因此被用于恶意目的的东西。

您需要注意$input,它将包含逗号或引号

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


有关此操作的详细讨论,请参阅。

为什么在本文中首先使用LIKE?因为我正在搜索仅给出“George”和类似案例的“George Thomson”等名称。啊,我现在明白了。是的,从输入中去掉
%
\
是有意义的。在这种情况下,我不知道一个名字包含了%。我想是“50美分”,但我想他的名字是50美分。。。(你可以叫我25)