【问题标题】:MariaDB SQL error with query for wordpress查询 wordpress 时出现 MariaDB SQL 错误
【发布时间】:2018-06-01 11:29:19
【问题描述】:

我在 MariaDB 服务器上遇到 SQL 错误,我不明白为什么。

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') AND wp_posts.post_type = 'post' AND wp_term_taxonomy.taxonomy =' 在第 7 行]

【问题讨论】:

  • 语法是value IN () 而不是value = IN() 去掉=

标签: sql mariadb


【解决方案1】:

这个语法错误

在 'IN ('publish') AND 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-&gt;posts.post_status 是一个 PHP 变量,可能为空,这会导致 SQL 语句无效,结果如下:

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

除了IN('publish') 必须没有=

喜欢:

WHERE wp_posts.post_status IN('publish')

在出现 SQL 语法错误的情况下,它对显示整个 SQL 语句非常有帮助。

【讨论】:

  • 语法错误 WHERE $wpdb->posts.post_status = IN ('publish', 'future')
  • 他只需要在 IN 之前删除 =,正如您在顶部评论中看到的那样。
猜你喜欢
  • 2016-03-25
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 2020-09-27
  • 2019-06-11
  • 2011-12-03
  • 1970-01-01
相关资源
最近更新 更多