0

可能重复:
在 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";   
4

2 回答 2

0

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 准备好的语句。

注册表。

于 2012-06-05T15:29:51.547 回答
0

您需要转义 MySQL 特有的字符。这mysql_real_escape_string()就是需要的地方。对所有可能包含特殊字符(如撇号)的数据使用它。

于 2012-06-05T15:30:52.400 回答