Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql语句中使用if语句_Php_Mysql_Sql - Fatal编程技术网

Php 在mysql语句中使用if语句

Php 在mysql语句中使用if语句,php,mysql,sql,Php,Mysql,Sql,我正在使用一个通用的WordPressSQL语句来获取文章标题。我想用一个postmeta值来替换文章标题,这个值为all-in-one seo插件是一个针对文章的全能seo标题 如何在sql命令中使用此if语句 没有all-in-one if语句的现有代码 //Limit to last 30 days, 1,000 items $rows = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb

我正在使用一个通用的WordPressSQL语句来获取文章标题。我想用一个postmeta值来替换文章标题,这个值为all-in-one seo插件是一个针对文章的全能seo标题

如何在sql命令中使用此if语句

没有all-in-one if语句的现有代码

//Limit to last 30 days, 1,000 items                    
$rows = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_date_gmt, $wpdb->posts.post_title
                    FROM $wpdb->posts, $wpdb->postmeta
                    WHERE $wpdb->posts.post_status='publish' 
                    AND (DATEDIFF(CURDATE(), post_date_gmt)<=30)
                    $includeMe
                    ORDER BY $wpdb->posts.post_date_gmt DESC
                    LIMIT 0, 1000");    
//限制为最后30天,1000项
$rows=$wpdb->get_results(“选择$wpdb->posts.ID,$wpdb->posts.post_date\u gmt,$wpdb->posts.post_title
从$wpdb->posts,$wpdb->POSTETA
其中$wpdb->posts.post_status='publish'
和(DATEDIFF(CURDATE(),post_date_gmt)posts.post_date_gmt DESC
上限为0,1000”);
新函数在Phil回答后出现错误

$rows = $wpdb->get_results("SELECT COALESCE($wpdb->postmeta.meta_value, $wpdb->posts.post_title) AS post_title, $wpdb->posts.post_date_gmt, $wpdb->posts.ID
                    FROM $wpdb->posts
                    LEFT JOIN $wpdb->post_meta
                    ON $wpdb->posts.ID = $wpdb->postmeta.post_id
                    AND $wpdb->postmeta.meta_key = '_aioseop_title' 
                    WHERE $wpdb->posts.post_status='publish' 
                    AND (DATEDIFF(CURDATE(), post_date_gmt)<=30)
                    $includeMe
                    ORDER BY $wpdb->posts.post_date_gmt DESC
                    LIMIT 0, 1000");    
$rows=$wpdb->get_results(“选择合并($wpdb->postETA.meta_值,$wpdb->posts.post_标题)作为post_标题,$wpdb->posts.post_日期\u gmt,$wpdb->posts.ID
从$wpdb->posts
左连接$wpdb->post\u meta
在$wpdb->posts.ID=$wpdb->postETA.post\u ID上
和$wpdb->postemta.meta_key=''u aioseop_title'
其中$wpdb->posts.post_status='publish'
和(DATEDIFF(CURDATE(),post_date_gmt)posts.post_date_gmt DESC
上限为0,1000”);
我将与
post\u meta
表上的
左联接一起使用。例如(注意,仅通用查询,与Wordpress没有直接关系)


很酷,谢谢-以前从未见过coalesce()函数-现在开始尝试。Phil,我刚更改了我的函数,出现了一个错误-我正要把它发回问题中-你介意看一下吗?WordPress数据库错误:[您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第4行的“ON wp_posts.ID=wp_postmeta.post_ID和wp_postmeta.meta_key=”上使用的正确语法]我想这是因为直接从哪里开始的variables@Bob是
$wpdb->post_meta
还是
$wpdb->postmeta
?两者都使用,我猜后者是有效的。
SELECT COALESCE(post_meta.value, posts.title) AS title
FROM posts
LEFT JOIN post_meta
ON posts.id = post_meta.post_id
AND post_meta.key = 'some_meta_key'