codeigniter - 通过外键

时间:2016-02-16 20:30:48

标签: php mysql codeigniter join prepared-statement

我有2个数据库db_1db_2 db_1包含表格users(包含'uid','name'列)
db_2包含表格blog_posts(包含'pid','uid','post_title'列)
我想从blog_posts中提取20个帖子以及与uid中提到的blog_posts对应的用户名。我尝试使用' join'与codeigniter准备了mysql语句,但它没有工作 获取此数据的最佳方法是什么?我不想为每个uid逐个获取名称,因为它会多次创建数据库连接,即21(1个用于获取所有帖子,20个用于获取每个帖子的用户名),这会降低速度。有没有更有效的方法。

1 个答案:

答案 0 :(得分:0)

好吧,我已经得到了问题的答案。我们可以做到以下几点。它只会创建2个数据库连接。

  1. 获取您要展示的'pid','uid','post_title'的所有帖子, 在你的情况下说20。喜欢, $post_data= array( 0=>array( 'pid'=>1, 'uid'=>2, 'post_title'=>'Hello there!' ), 1=>array( 'pid'=>2, 'uid'=>5, 'post_title'=>'What's up!' ) );

  2. 现在,获取users中与您在数组中的第1步中获得的所有uid对应的名称列表。

    $user_map= array( '2'=>'John', '5'=>'Robert', '11'=>'David' );

  3. 现在,您可以按如下方式打印属于帖子的用户姓名:

    foreach($post_data as $value) { echo $value['post_title']."-".$user_map[$value['uid']]; }