MariaDB SQL ошибка с запросом для WordPress - PullRequest
0 голосов
/ 01 июня 2018

Я сталкиваюсь с ошибкой SQL на сервере MariaDB и не понимаю, почему.

SQL:

 // Check if there is posts before our $date
    $postA =$wpdb->get_row("
SELECT ID, post_date 
FROM {$wpdb->prefix}posts 
LEFT JOIN $wpdb->term_relationships ON
($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE   $wpdb->posts.post_status = IN ('publish', 'future')
AND $wpdb->posts.post_type = 'post'
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = 18
AND $wpdb->posts.post_date <'{$date}' ORDER BY post_date DESC LIMIT 1");

и сообщение об ошибке:

В вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с IN ('publish') И wp_posts.post_type = 'post' AND wp_term_taxonomy.taxonomy = 'в строке 7]

1 Ответ

0 голосов
/ 01 июня 2018

Эта синтаксическая ошибка

синтаксис для использования рядом с IN ('publish') И wp_posts.post_type = 'post' AND wp_term_taxonomy.taxonomy = 'в строке 7]

будет ссылаться на эту часть:

WHERE   $wpdb->posts.post_status = IN ('publish', 'future')
AND $wpdb->posts.post_type = 'post'
AND $wpdb->term_taxonomy.taxonomy = 'category'

$wpdb->posts.post_status является переменной PHP и может быть пустым, что приведет к неверному предложению SQL, в результате чего

WHERE IN ('publish') AND wp_posts.post_type = 'post' AND wp_term_taxonomy.taxonomy 

ApartIN('publish') должен идти без =

Например:

WHERE wp_posts.post_status IN('publish')

Это очень полезно в случае ошибок синтаксиса SQL для отображения всего предложения SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...