我有一个包含电影名称和其他内容的表格,在我的php页面中我想选择一些电影..
$sql3 = "SELECT * FROM Movies where Movies.nameM='{$row['nameM']}';";
当nameM
(电影名称)名称中包含撇号时,此查询崩溃:/
如何更改此功能?
感谢您的帮助
答案 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擦除它们。
编辑以清除代码