если заявление не работает - PullRequest
0 голосов
/ 18 ноября 2010

В 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 ) );
    }

Этот оператор работает только с оператором = и "else (do code ..}". С! = Ничего не происходит, я не могу понять, почему .. Я просто хочу сделать код как можно более коротким. 1004 *

Ответы [ 3 ]

0 голосов
/ 18 ноября 2010
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 голосов
/ 18 ноября 2010

Ваш оператор if проверяет, что вывод

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

оценивается как истинное значение. По сути, вы выполняете запрос, который выбирает все идентификаторы из ВСЕХ строк (кроме, возможно, одной). Это неэффективно и, вероятно, не то, что вы хотели - вы, вероятно, хотели проверить, не найдена ли соответствующая строка, а не найдены ли не соответствующие строки.

Вы, вероятно, хотите:

if (!$wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id = $post_ID" )) {
0 голосов
/ 18 ноября 2010

Попробуйте

if( !$wpdb->get_row("SELECT post_id FROM wp_post_votes WHERE post_id = $post_ID" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...