2010-11-18 7 views
0

を動作しない場合、私は文がWordpressので

if($wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id != $post_ID")) { 
    $wpdb->insert($wpdb->prefix . 'post_votes', array('post_id' => $post_ID)); 
    } 
私は(管理パネルからの投稿を更新する際に、二重のエントリを避けるために)すでにそこに新しい表に公開しない場合はポストのポストIDを追加しようとしています

このステートメントは、a =演算子と "else(do code ..)"としか動作しませんが、!=何も起こらないので、理由はわかりません。できるだけコードを短くしておきたい。

+0

あなたはどのような '$ wpdb-> get_row(...)'リターンを見てみましたか? – zerkms

答えて

0
if(!($wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id = $post_ID"))) { 
    $wpdb->insert($wpdb->prefix . 'post_votes', array('post_id' => $post_ID)); 
} 
をお試しください

あなたが探しているものでなければなりません。

+0

ああ、感謝するよ!私もend()を追加することをお勧めしますか?またはexit(); ?この文は、if bracketの後にreturn $ somevariableを持つ関数内にあります。 – MegaRambo

+0

私はあなたのアプリの流れの残りを知らないので、わかりません。それを試して、それが壊れているかどうか確認してくださいexit()が問題を引き起こす可能性がある場合は、CPU時間の余分な数サイクルを必要としないかもしれません。 – Tim

+0

ああ、私は、参照してください!再度、感謝します! :-) – MegaRambo

0

if(!$wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id = $post_ID") 
+0

ありがとう!これは正解です! – MegaRambo

0

あなたのif文が

$wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id != $post_ID") 

からの出力は、真のような値に評価することを確認して(条件があなたの「他」の効果をシミュレートする前に!を追加しました)。あなたは本質的にすべての行からすべてのIDを選択するクエリを実行しています(おそらく1つを除く)。これは非効率的でおそらくあなたが望むものではないでしょう - おそらく、一致する行が見つからなかったかどうかをチェックしたいのではなく、不一致の行が見つかったかどうかをチェックしたかったでしょう。

おそらくたい:

if (!$wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id = $post_ID")) { 
+0

ありがとう!これは正解です! – MegaRambo