php查询中的撇号不起作用

时间:2013-12-18 17:20:46

标签: php mysql

我有一个包含电影名称和其他内容的表格,在我的php页面中我想选择一些电影..

$sql3 = "SELECT * FROM Movies where Movies.nameM='{$row['nameM']}';";

nameM(电影名称)名称中包含撇号时,此查询崩溃:/

如何更改此功能?

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您可以尝试:

$sql3 = "SELECT * FROM Movies where Movies.nameM='".mysqli_real_escape_string($row['nameM'])."';";

如果您使用旧的和已弃用的mysql_*函数:

$sql3 = "SELECT * FROM Movies where Movies.nameM='".mysql_real_escape_string($row['nameM'])."';";

答案 1 :(得分:0)

斯普利说,你应该更多地进行R& D.只是为了让你更容易

你可以使用mysql(i)_真正的转义函数,但是如果你使用的框架在PDO之上工作,你就没有mysql(i)_ *连接而且无法使用它们转义字符串 我以前在yii或f3上看过这个问题或者...... 大多数框架都支持param安全注入。

\Framework::Query("SELECT .... WHERE column=:param", array(':param'=>$value));

但有时您可能需要手动转义字符串值。要使用PDO执行此操作,您可以获取pdo对象并使用:

substr($pdo->quote($string, , \PDO::PARAM_STR), 1, -1)

唯一需要注意的是 - > quote()还会将结果放在结果周围,然后使用substr擦除它们。

编辑以清除代码