0

我正在玩弄一种博客。我收到一个错误,当我说:

我的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)'、'News'、'NEWS is here 附近使用的正确语法!这是迈克尔·本德(Michael Bender)在第 2 行报道新新闻

那么为什么mysql不接受我的查询呢?谢谢!

4

3 回答 3

3

您必须转义所有传递给 mysql_query 的变量mysql_real_escape_string。此外,您可能想要使用 PDO 或 mysqli。

于 2012-12-07T18:08:19.797 回答
1

这会破坏您的查询:

字符串'新消息!(听起来像 noo noo's)'(长度 = 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
于 2012-12-07T18:08:33.203 回答
0

在您的数据上使用 mysql_real_escape_string(),因为它会防止您的查询因为它们包含特殊字符而崩溃。

于 2012-12-07T18:11:51.500 回答