【问题标题】:Insert values dynamically in database using CI active record?使用 CI 活动记录在数据库中动态插入值?
【发布时间】:2013-04-15 00:06:20
【问题描述】:

我有从外部数据库获取数据的功能,我得到特定的电影信息,例如 id、名称、流派等。现在,如果电影流派是动画,我只想将这一流派添加到数据库中。现在我可以使用 isset 解决问题,但是我将拥有类型为 null 的 db 条目,我想避免这种情况。解决这个问题的最佳方法是什么?使用 foreach 循环?

$records = array(
    array('film_id' => $movies['id'], 'genre_id' => $movies['genre'][0]),
    array('film_id' => $movies['id'], 'genre_id' => $movies['genre'][1]),
    array('film_id' => $movies['id'], 'genre_id' => $movies['genre'][2])
);

$this->db->insert_batch('film_genre', $records);

【问题讨论】:

  • 如何查询外部数据库?您是否可以选择流派与指定流派(例如动画)匹配的记录,而不是返回匹配所有流派的记录?如果没有,那么您建议遍历记录可能会起作用。
  • 我得到了基于电影标题的特定查询,所以我无法选择其他任何内容。
  • 正如您已经建议的那样,使用 foreach 循环。您可以过滤结果(从 $records 数组中删除一条记录),或者改为 insert_batch,使用常规插入,一次一条记录(取决于您的条件)。

标签: php codeigniter activerecord codeigniter-2


【解决方案1】:

你也可以使用array_filter

$arr = array(

    array("id"=>3, "genre"=>"action"),
    array("id"=>13, "genre"=>"comedy"),
    array("id"=>23, "genre"=>"action"),
    array("id"=>53, "genre"=>"comedy"),
    array("id"=>63, "genre"=>"drama"),
    array("id"=>73, "genre"=>"action"),
    array("id"=>83, "genre"=>"drama"),

);

function genre($var)
{
    if($var['genre'] == 'action')
    {
        return $var;
       // you can also do the insert here like $this->db->insert();
    }
}

$filtered = array_filter($arr, "genre");

print_r($filtered)

【讨论】:

    【解决方案2】:

    您可以使用 Mysql 的 GROUP BY 函数对获取的数据进行分组

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 2018-06-27
      • 2014-12-15
      • 2013-09-29
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多