2013-02-28 140 views
1

我从使用参数删除表中的行时遇到问题。下面是代码:从mysql数据库中删除行

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'"); 
} 

问题是,!=似乎被错误理解,也许我dooing语法错误?

将apreciate任何帮助。

----- -----编辑

好吧,这里是我现在有:

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

问题是不是!=,但问题是,你曾用 “” 而不是在你的代码在post_parent ='$ dbProductId'之间,ID!='$ dbProductThumbnail'“

mysql_query(”删除wp_posts WHERE post_parent ='$ dbProductId',ID!='$ dbProductThumbnail'“); }

因此,corrent语法如下。

DELETE FROM wp_posts WHERE post_parent = '$ dbProductId' 和id!= $ dbProductThumbnail“

+0

更新了我的帖子,请看那里。并且是一个错误,但它没有帮助。 – 2013-02-28 10:47:51

+0

从wp_posts删除WHERE post_parent ='$ dbProductId'AND ID <>'$ dbProductThumbnail' – 2013-02-28 10:50:44

+0

使用'<>'它会删除所有内容,即使是ID为'dbProductThumbnail'的行。 – 2013-02-28 10:55:59

3

它应该是AND而不是逗号。

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

作为旁注,查询是用SQL Injection脆弱,如果变量的值(小号)从外部来了。请看下面的文章,了解如何防止它。通过使用PreparedStatements你可以摆脱使用单引号围绕值。

0

使用ANDORWHERE声明

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

更新我的帖子,请在那里寻找。 'AND'是一个错误,但它没有帮助。 – 2013-02-28 10:47:27