为什么mysql_real_escape_string不工作?

时间:2016-05-01 18:06:02

标签: php mysql sql

我正在尝试在我的数据库中插入 DataContext="{Binding MyModelis, RelativeSource={RelativeSource Self}}" 符号并使用以下代码。

'

我收到此错误

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第1行启动示例库(论坛帖子)''

如果我在$actionurl =$_POST['actionurl']; $newtitle = $_POST['newtitle']; $newtitle = mysql_real_escape_string($newtitle); $result2 = mysql_query("UPDATE links SET title='$newtitle' WHERE url='$actionurl'") or die(mysql_error()); 变量上使用mysql_real_escape_string,为什么会出现错误?

2 个答案:

答案 0 :(得分:1)

我怀疑它导致错误的动作,而不是$ newtitle。

要调试它,请回显或打印要执行的SQL语句。

您可以这样做:

$sql = "UPDATE links SET title='$newtitle' WHERE url='$actionurl'";
// for debugging, output contents of the $sql string
echo "SQL=" . $sql ;
mysql_query($sql) or die(mysql_error();

正如其他人已经建议的那样,不推荐使用mysql_接口。新开发应该使用mysqli或PDO。并使用带有绑定占位符的预准备语句。在2016年与mysql_real_escape_string进行斗争似乎是荒谬的。

答案 1 :(得分:-1)

你的php.ini上有魔术引号吗?如果是,禁用它应该可以解决您的问题。 (默认情况下可以启用)