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

問題は!=ではありませんが、問題は、post_parent ='$ dbProductId'、ID!='$dbProductThumbnail'"の間のコードでANDの代わりに"、"を使用したことです。

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

したがって、corrent構文は以下のとおりです。

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

于 2013-02-28T09:53:08.360 に答える
0

ステートメントでANDorORを使用するWHERE

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