我正在玩一种博客。我收到错误,当我说:
我的PHP如下:
$query = "INSERT INTO articles (articleTitle, articleType, articleText, userID)
VALUES('$articleTitle', '$articleType', '$articleText', '$userID')";
$result = mysql_query($query);
var_dump($articleTitle);
var_dump($articleType);
var_dump($articleText);
var_dump($userID);
var_dump($result);
echo mysql_error();
我的结果是:
string 'New News! (Sounds like noo noo's)' (length=33)
string 'News' (length=4)
string 'NEWS is here! This is Michael Bender reporting on the new news that we now have news! Isn't that exciting news?' (length=111)
string '1' (length=1)
boolean false
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 's'附近,'新闻','新闻就在这里!这是Michael Bender的报道 第2行的新消息
那么为什么mysql不接受我的查询呢?谢谢!
答案 0 :(得分:3)
您必须使用mysql_real_escape_string
转义传递给mysql_query的所有变量。此外,您可能想要使用PDO或mysqli。
答案 1 :(得分:1)
这会破坏您的查询:
字符串'新闻! (听起来像noo noo)'(长度= 33)
单引号'
在查询中使用它们之前,您需要转义值。或者您将成为Sql Injection
的受害者示例:
$query = "INSERT INTO articles (articleTitle, articleType, articleText, userID)
VALUES('%s', '%s', '%s', %d)";
$query = sprintf($query,
mysql_real_escape_string($articleTitle),
mysql_real_escape_string($articleType),
mysql_real_escape_string($articleText),
(int) $userID); // assuming your userId is an integer
答案 2 :(得分:0)
对您的数据使用mysql_real_escape_string(),因为它会阻止您的查询崩溃,因为它们包含特殊字符。