2012-03-03 122 views
0

我进入我的表单字段这一点:O'mallymysql_real_escape_string逃逸单引号到MySQL入门

我运行文本此代码:

foreach($_POST as $key=>$value){ 
    $form[$key] = mysql_real_escape_string($value); //Escape input. 
} 

的POST输出:O'mally

输出变量运行后上面列出的代码是:O\'mally

查询:

mysql_query("insert into tbl_test 
       (lastName) 
       values 
       ('{$form['lastName']}')") 

数据库中获取O\'mally插入它(我想O'mally要插入,不是逃避)。

我在这里做错了什么?

我已确认魔术引号为OFF通过phpinfo()。谢谢。

+0

你如何执行mySQL语句? – knittl 2012-03-03 13:50:52

+1

改用准备好的语句,那么你根本就不必逃避。 – 2012-03-03 13:51:14

+0

@knittl我添加了查询。 – Shackrock 2012-03-03 13:52:55

回答

0

当您需要从数据库输出O'mally到浏览器时,只需使用stripslashes()函数。

+0

我认为使用mysql_real_escape_string意味着它进入数据库没有转义字符,所以你不需要使用stripslashes? – Shackrock 2012-03-03 14:00:06

+0

mysql_real_escape_string直接转义它们。 – 2012-03-03 14:09:22