mysqli_real_escape_string和双引号问题

时间:2015-07-28 09:11:59

标签: php mysql

我有这段代码:

$var = mysqli_real_escape_string($connection,$_POST['var']);
$sql = "UPDATE users SET var = '$var' WHERE id = '$id'";

如果var是aaa,即使var是aa'bbb也没关系,但如果var是sss"ddd - 更新的var只是sss。 我知道这是因为mysql查询包含"

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

在开始使用PHP之前,您必须首先学习HTML基础知识 此外,你必须了解两者之间的区别。

所以,不要因为你的HTML不完整而责怪PHP 打开页面源代码并查看您的sss"ddd声音和安全,但是这样会破坏HTML

<input value="sss"ddd">

从现在开始,通过htmlspecialchars()

传递每个表单值

答案 1 :(得分:0)

您可以尝试像这样编写查询

$var = mysqli_real_escape_string($connection,$_POST['var']);
$sql = 'UPDATE users SET var = "'.$var.'" WHERE id = "'.$id.'"';

答案 2 :(得分:-1)

您可以按照以下方式尝试 -

SET @qry=CONCAT('UPDATE users SET var = "',REPLACE(@var,'"','\''),'" WHERE id = \'457\''); 
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;