可能的重复项:
防止 PHP 中的 SQL 注入的最佳方法
在下面的代码中,字段title
和变量$submission
是文本名称。 查询通常工作正常。 但是,如果title
和$submission
包含撇号,则查询不包括结果。
如何使查询使用撇号?
$submission = $_GET['submission'];
$query2 = "SELECT
title,
1ad1,
1adcit,
1adst,
zip,
1adph,
1site,
neighborhood
FROM
submission
WHERE
title = '$submission'
ORDER BY
neighborhood ASC";
您需要转义MySQL特有的字符。这就是需要mysql_real_escape_string()
的地方。将其用于可能包含特殊字符(如撇号)的所有数据。
javascript 的 encodeURI() 绝对是你的朋友。https://developer.mozilla.org/en/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURI
但是它不会解决您的撇号问题,因为这是一个完全允许的字符。在 sql 操作之前,您必须在 php 中过滤它,使用:
- mysql_real_escape_string
- mysqli_real_escape_string
- PDO准备的声明。
注册。