0

所以,我有以下 PHP 命令发布到我的数据库。

$sql = "INSERT INTO `db`.`tab;e` (`id`, `type`, `subtype`, `image1`, `image2`, `image3`, `title`, `body`, `price`, `googlecode`, `date`) VALUES (NULL, '$type', '$subType', '$image1', '$image2', '$image3', '$title', `$body`, '$price', '$googleCode', '$date');";

正在通过帖子获取数据。例如,类型是

$type = $_POST[type];

ETC..

但是,在发布内容时,我的代码有时有效,有时无效。

我认为这是因为我使用niceEdit来抓取正文,当它发布时,我担心 ' 和 " 会干扰我的帖子......

此外,它$googlecode是一堆带有引号和其他内容的 div。

这可能是我的代码断断续续工作的原因吗?

4

2 回答 2

3

我猜它有时会失败,因为您没有转义这些值,而是直接将它们添加到查询中。这样,某些值可能会破坏 SQL 语句,并且该语句容易受到 SQL 注入的影响。

要解决此问题,您必须转义这些值,甚至更好的是,使用准备好的语句。还强烈建议添加一些错误处理,以便您可以更轻松地获得有意义的完整错误消息(谢谢 Pekka)。

于 2012-06-08T06:58:10.193 回答
0
foreach($_POST as $key => $value) {
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    $_POST[$key] = mysql_real_escape_string($value);
}


$type = $_POST[type];
//etc...

$sql = "INSERT INTO `db`.`table` (`id`, `type`, `subtype`, `image1`, `image2`, `image3`, `title`, `body`, `price`, `googlecode`, `date`) VALUES (NULL, '$type', '$subType', '$image1', '$image2', '$image3', '$title', '$body', '$price', '$googleCode', '$date');";
于 2012-06-08T07:09:04.077 回答