这可能是常见的事情,但我有一个问题。允许撇号,同时仍然保持mysql_real_escape_string()
标记。mysql_real_escape_string(),但允许带撇号的名字
我有这样的:$name = stripslashes(mysql_real_escape_string($_POST['stadium_name']));
,我测试它这样的:
$getInfoX = mysql_fetch_array(mysql_query("SELECT * FROM `stadiums` WHERE `stadium_name` = '$stadium_name'")) or die(mysql_error());
我可以做一个例子注入像x'; DROP TABLE members; --
或类似Stade de l'Aube
撇号的名称...但撇号名称让我像一个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Aube'' at line 1
我该怎么办?
使用PDO或mysqli的,[阅读文章的详细信息:防止SQL注入的最佳方式(http://stackoverflow.com/questions/60174/best-way-to -prevent-sql -injection) –
mysql_real_escape_string会为你处理。你得到的错误是从MySQL而不是PHP是吗? – case1352
为什么你在'mysql_real_escape_string'已经为你逃脱之后仍然在剥离斜线? – Gapton