1

我在使用参数从表中删除行时遇到问题。这是代码:

if ($dbProductImageIdNumber) {
$ImagesToDeleteNumber = $dbProductImageIdNumber -1 - $numItemImages;
echo "$dbProductImageIdNumber" . ' ';
echo "$numItemImages" . ' ';
echo "$ImagesToDeleteNumber" . ' ';
echo 'Deleting';
mysql_query("DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' ,ID != '$dbProductThumbnail'");
}

问题是这!=似乎被错误地理解了,也许我在做语法错误?

将感谢任何帮助。

- - -编辑 - - -

好的,这就是我现在所拥有的:

if ($dbProductImageIdNumber) {
$ImagesToDeleteNumber = $dbProductImageIdNumber -1 - $numItemImages;
echo "$dbProductImageIdNumber" . ' ';
echo "$numItemImages" . ' ';
echo "$ImagesToDeleteNumber" . ' ';
echo "$dbProductId" . ' ';
echo "$dbProductThumbnail" . ' ';
mysql_query("DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'");
}

示例:我的 $dbProductId 是 '16' 和 $dbProductThumbnail '17'。问题是,为什么这个命令不删除 post_parent 为 '16' 且 ID 不是 17 的任何行?有什么线索吗?

4

3 回答 3

3

它应该是AND而不是逗号。

DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-28T09:17:46.187 回答
0

在你的陈述中使用ANDORWHERE

DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'
于 2013-02-28T09:22:10.777 回答
0

问题不是 != 但问题是您在 post_parent = '$dbProductId' ,ID != '$dbProductThumbnail'" 之间的代码中使用了 "," 而不是 AND

mysql_query("DELETE FROM wp_posts WHERE post_parent = '$dbProductId' ,ID != '$dbProductThumbnail'"); }

因此,正确的语法如下。

从 wp_posts 中删除 post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'

于 2013-02-28T09:53:08.360 回答