保护特殊字符的SQL查询

时间:2014-10-31 10:21:08

标签: php mysql

我正在尝试更改字符串的内容(来自用户的输入),我想删除任何会让我的查询失败的字符。例如,如果我在其中插入带有“'”的第二个名称,则查询将失败。

由于我必须从DB输出这些行,我想知道是否有任何方法可以在将数据库中的字符串替换为HTML值时插入字符串,这样当我输出它时,浏览器将完成剩下的工作。

我给你留个例子:

$string = $_POST['user_input']; // Let it be Lol'd
$sql = "INSERT INTO table(field) VALUES('$string')";

现在没有对字符串做任何事情我会得到查询:

INSERT INTO table(field)VALUES('Lol'd')

我正在寻找的是将'转换为',以便在数据库中保存Lol'd,但当我回复它时,它只会打印Lol'd

2 个答案:

答案 0 :(得分:1)

有很多解决方案。您可以使用htmlentities()之类的函数:

$string = htmlentities($_POST['user_input']); // Let it be Lol'd
$sql = "INSERT INTO table(field) VALUES('$string')";

要从MySQL表中读取字符串,请使用html_entity_decode()

答案 1 :(得分:-1)

试试这个

$string = str_replace("'","\'",$_POST['user_input']); 
$sql = "INSERT INTO table(field) VALUES('$string')";