php - PHP wordpress 中的一次查询中的双重 MySQL 查询
问题描述
我正在使用 wordpress 网站和内部自定义 PHP srcipt,它将与 CRON 一起运行以更新帖子。
我怎么看:
- 我想查询数据库中的帖子表并获取所有已发布的帖子。
- 我需要对表进行一次查询 - postmeta - 从我的自定义字段中获取值(我需要解析一个链接)
我是怎么做的:
$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>";
}
}
所以问题是:问题出在 MySQL 查询上。我需要这个响应:array[0] -> ID(来自帖子)、post_title(来自帖子)、meta_value(来自 postmeta,其中 meta_key = 'src_link')。我怎样才能得到这个回应?
我试过这个 - 但 id 不起作用:
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'
问题是当我添加这一行时 -
AND meta.meta_key='src_link'
它什么也找不到。如果我删除这一行。它找到了我需要的所有内容,但有重复项(我只需要 Meta_key = 'src_link' 的行。
表格:
帖子:
-------------------
id | post_title
------------------
1 | new title here
------------------
2 | again a title here
后元:
meta_id | post_id | meta_key | meta_value
---------------------------------------------
1 | 2 | src_link | here_is_my_link
---------------------------------------------
2 | 1 | empty | not_my_link
解决方案
你可以像这样使用INNER JOIN
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'