我在使用参数从表中删除行时遇到问题。这是代码:
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的任何行?任何线索?
答案 0 :(得分:3)
它应该是AND
而不是逗号。
DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
在AND
声明中使用OR
或WHERE
DELETE FROM wp_posts
WHERE post_parent = '$dbProductId' AND ID != '$dbProductThumbnail'
答案 2 :(得分:0)
问题不在!=但问题是你在代码中使用了“,”而不是AND,在post_parent ='$ dbProductId',ID!='$ dbProductThumbnail'“
之间mysql_query(“DELETE FROM wp_posts WHERE post_parent ='$ dbProductId',ID!='$ dbProductThumbnail'“); }
所以,正确的语法如下。
从wp_posts删除 WHERE post_parent ='$ dbProductId'AND ID!='$ dbProductThumbnail'