如何将包含引号的字符串插入数据库?

时间:2010-06-26 02:27:17

标签: php mysql

当我尝试检查包含引号的字符串时,INSERT查询失败。如何插入带单引号或双引号的字符串?

例如:

$message = "Bob said 'don't forget to call me'";

mysql_query("INSERT INTO someTable (messages) VALUES ('$message')");

我认为需要过滤输入,但我应该使用哪种功能?

3 个答案:

答案 0 :(得分:6)

请参阅:mysql_real_escape_string

你应该总是逃避事情用户提供的任何东西> 它进入数据库以防止SQL注入。

答案 1 :(得分:5)

$message = mysql_real_escape_string($message);

此函数应该应用于要在引号中插入查询的每个变量。没有例外。
它不是真正的保护注射,而只是一种语法规则。

虽然你也需要真正的保护。 我在最近的回答中详细解释过:In PHP when submitting strings to the database should I take care of illegal characters using htmlspecialchars() or use a regular expression?

答案 2 :(得分:4)

整整一个小时的问题并没有人提到逃避字符串是邪恶的,你应该use prepared statements instead?非常有效的方法来消除SQL injection