当我尝试检查包含引号的字符串时,INSERT查询失败。如何插入带单引号或双引号的字符串?
例如:
$message = "Bob said 'don't forget to call me'";
mysql_query("INSERT INTO someTable (messages) VALUES ('$message')");
我认为需要过滤输入,但我应该使用哪种功能?
答案 0 :(得分:6)
你应该总是逃避事情用户提供的任何东西>> 它进入数据库以防止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