我有3个表:tco_articles
,tco_module_eostext
和tco_articles_modules
.我tco_articles
有独特的id
钥匙.每篇文章一篇.我的tco_module_eostext
独特之处instance_id
属于每篇文章.我tco_articles_modules
包含了所有的article_id
s,但是instance_id
在其他表中使用了9倍.
所以我可以article_id
用instance_id
,当你在查询中tco_module_eostext
会返回空.
我想创建一个查询,返回正确文章的正确正文.
到目前为止,我有:
global $wpdb; $posts = array(); $ids = $wpdb->get_results('SELECT DISTINCT instance_id, article_id FROM tco_articles_modules', ARRAY_A);
这将返回包含所有实例和ID的数组,如:
Array ( [0] => Array ( [instance_id] => 928615 [article_id] => 129396 ) [1] => Array ( [instance_id] => 928616 [article_id] => 129396 ) [2] => Array ( [instance_id] => 928617 [article_id] => 129396 ) [3] => Array ( [instance_id] => 928618 [article_id] => 129396 )
你可以看到article_id
s是相同的但是instance_id
.当你放
$wpdb->get_results('SELECT body FROM tco_module_eostext WHERE instance_id=928617 ', ARRAY_A);
你可能会变空,但是
$wpdb->get_results('SELECT body FROM tco_module_eostext WHERE instance_id=928618 ', ARRAY_A);
你可以有一些正文.
这是我的问题.我需要仔细检查所有这些并过滤掉非空的并为它们分配正确的文章.我设法输出文章
foreach ($ids as $key => $value) { $instance_ID = $value['instance_id']; $article_ID = $value['article_id']; $article_out = $wpdb->get_results('SELECT * FROM tco_articles WHERE id='.$article_ID.' ', ARRAY_A); $posts[$article_ID] = $article_out[0]; }
返回的内容如下:
Array ( [129396] => Array ( [id] => 129396 [headline] => Bla bla bla title [intro] => This is cool article intro [needs_review] => 0 [published] => 2014-12-16 09:17:00 [unpublished] => [hidden] => 0 [no_single_page] => 0 [permalink] => link-perma-link-here [internal_slug] => [type_id] => 3 [thread_id] => 0 [news_id] => 0 [header_game_id] => 0 [puff_hh_id] => 0 [puff_title] => [hdrcol_id] => 900 [review_queued] => [lock_timeout] => 0 [created] => 2014-12-16 09:17:00 [updated] => 2015-01-16 13:51:30 [created_by] => 84142 [updated_by] => 84142 ) ...
现在我想body
从tco_module_eostext
表中附加文本.
是否有一个查询我可以用来自动执行此操作或者当时执行此操作然后追加到$posts
数组?
当你有180000+帖子时,查询的foreach方法有点慢.
任何帮助表示赞赏.