在PHP应用程序的幕后,我有一个AJAX调用,它将URL编码的字符串(通过JavaScript" encodeURIComponent"函数)发送到PHP函数,以便在MySQL查询中使用:例如,查询如下所示:
select ID,Type from table where Type like '' and ID = n;
" Type"传递给PHP函数的字符串如下所示:
"size < 5"
这给出了一个看起来像这样的MySQL查询:
select ID,Type from table where Type like 'size < 5' and ID = n;
唯一的问题是,当PHP函数获取字符串时,它立即使用其&#34; strip_tags&#34;用于清理字符串的函数,将我的结束查询转换为:
select ID,Type from table where Type like 'size ' and ID = n;
我不想不使用&#34; strip_tags&#34;由于SQL注入问题,但我用来保护自己的东西让我无法执行所需的功能。有没有安全的解决这个问题的方法?
答案 0 :(得分:0)
使用PDO,尝试这样的事情。
<?php
$pdo = new PDO('mysql:host=yourHostName;dbname=yourDatabaseName', "Username", "Password");
$query = "SELECT `ID`,`Type` FROM table WHERE `Type` LIKE :type";
$prepare = $pdo->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$type = "size < 5";
$prepare->execute(array(':type' => $type));
$array_result = $prepare->fetchAll();
?>