PHP wordpress中的一次查询中的双MySQL查询
我正在使用一个wordpress网站和一个定制的PHP srcipt,它将与CRON一起运行以更新帖子 我的看法:PHP wordpress中的一次查询中的双MySQL查询,php,mysql,wordpress,Php,Mysql,Wordpress,我正在使用一个wordpress网站和一个定制的PHP srcipt,它将与CRON一起运行以更新帖子 我的看法: 我想查询数据库中的posts表并获取所有发布的posts 我需要再对表进行一次查询——PosteTa——以从我的自定义字段中获取值(我需要解析一个链接) 我是如何做到的: $pages = $wpdb->get_results( " SELECT post_title, id FROM $wpdb->posts WHERE post_status = 'publis
$pages = $wpdb->get_results(
"
SELECT post_title, id
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
"
);
if( $pages ) {
foreach ( $pages as $page ) {
echo $page->post_title . " - ";
echo $page->id . "<br>";
}
}
SELECT post_title, id, meta_value
FROM $wpdb->posts as post
INNER JOIN $wpdb->postmeta as meta ON post.id=meta.post_id
WHERE post.post_status = 'publish'
AND post.post_type = 'post'
AND meta.meta_key='src_link'
meta_id | post_id | meta_key | meta_value
---------------------------------------------
1 | 2 | src_link | here_is_my_link
---------------------------------------------
2 | 1 | empty | not_my_link
问题是当我添加这一行时-
AND meta.meta_key='src_link'
它什么也没找到。如果我删除这一行。它找到了我所需要的所有东西,但是使用了dupclicates(我只需要Meta_key='src_link'的行)
各表:
帖子:
-------------------
id | post_title
------------------
1 | new title here
------------------
2 | again a title here
邮差:
$pages = $wpdb->get_results(
"
SELECT post_title, id
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
"
);
if( $pages ) {
foreach ( $pages as $page ) {
echo $page->post_title . " - ";
echo $page->id . "<br>";
}
}
SELECT post_title, id, meta_value
FROM $wpdb->posts as post
INNER JOIN $wpdb->postmeta as meta ON post.id=meta.post_id
WHERE post.post_status = 'publish'
AND post.post_type = 'post'
AND meta.meta_key='src_link'
meta_id | post_id | meta_key | meta_value
---------------------------------------------
1 | 2 | src_link | here_is_my_link
---------------------------------------------
2 | 1 | empty | not_my_link
您可以像这样使用内部联接
SELECT post_title, id, meta_key
FROM $wpdb->posts as post
INNER JOIN $wpdb->postmeta as meta ON post.id=meta.post_id
WHERE post_status = 'publish' and meta.meta_key='src_link'
AND post_type = 'post'
当您使用全局
$wpdb
时,我们可以假设您的PHP在WP框架内。因此,您不需要自定义SQL查询-您可以使用标准:
$args=array(
“post_type”=>“post”,
“发布状态”=>“发布”,
“每页帖子数”=>-1,
“元查询”=>数组(
排列(
'key'=>'src_link',
“比较”=>“存在”,
),
),
);
$postsQuery=get_posts($args);
foreach($postsQuery作为$myPost){
//我们使用$myPost而不是$post,因为后者是循环中使用的全局变量
回显“”。打印($myPost,true)。“”;
更新发布元数据($myPost->ID,‘更新链接’,$myCustomValue);
}
在这里,我们将获取所有状态为“发布”的post
类型的帖子,并使用meta\u查询查找存在src\u链接的帖子。尝试以下操作:
感谢您的快速回答,但此代码-添加了5个重复项,但未找到src链接。请使用示例数据更新问题,以便我可以根据您的预期输出帮助您。请尝试我的更新答案不要忘记获取字段post_title,id,meta_key
我在回答中添加了两个表的模式和示例数据。添加了e样本数据它也找不到任何东西;(谢谢,但我复制粘贴了此代码,它没有任何错误。)posts@mrdeath4该代码确实有效-我在少数几个安装上使用了几个不同的键对其进行了测试,它在所有情况下都会返回POST。因此,我假设您搜索的meta_键最有可能不存在。请检查您的数据库值并确保您搜索的内容确实存在(任何post
-使用src\u链接的meta\u键键入post
)。