带引号的姓氏打破SQL查询,如何解决这个问题?

时间:2011-09-02 04:07:12

标签: php mysql

  

可能重复:
  apostrophes are breaking my mysql query in PHP

我让一位朋友测试我的网站,他的姓氏有一个'。 O'Rourke所以我在Rourke周围的语法错误。显然是由撇号引起的。

如何防止这种情况发生,以便他可以注册到我的网站?

$name = $user_profile[name];

mysql_select_db("gamedb", $con);

$sql="INSERT IGNORE INTO Users (FID, Name, Date) VALUES ('$fid','$name',NOW())";

逃避是否解决了这个问题?我实际上无法尝试转义它,因为该名称是从usr facebook帐户中检索的。

由于

5 个答案:

答案 0 :(得分:3)

使用预备语句。这将自动处理输入转义。当前INSERTSQL injection attack开放。查看mysqli_stmt::prepare()

答案 1 :(得分:1)

使用mysql_real_escape_string()作为变量

$sql = "INSERT IGNORE INTO Users (
          FID, 
          Name, 
          Date
        ) VALUES (
          '" . mysql_real_escape_string($fid) . "',
          '" . mysql_real_escape_string($name) . "',
          NOW()
        )";

答案 2 :(得分:0)

使用以下命令转义字符串:

$name = mysql_escape_string($user_profile[name]);

这会阻止sql injection

答案 3 :(得分:0)

在插入行之前应使用mysql_real_escape_string($sql)

答案 4 :(得分:0)

你需要在php中使用mysql_real_escape_string函数。您可以在此处查看详细信息http://php.net/manual/en/function.mysql-real-escape-string.php