You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用$this->db从MySQL的videos表获取IMDb id报错如何解决

问题排查与解决方案

以下排查基于CodeIgniter框架数据库查询构造器的语法规则:

原有代码错误点

  • 代码1:get_where() 第二个参数要求传入查询条件键值对数组,仅传入单元素数组array('imdbid')不符合参数要求,同时该写法没有指定查询字段,会默认查询表中所有字段。
// 错误写法
$imdb_id =  $this->db->get_where('videos', array('imdbid'))->result_array();
  • 代码2:get() 第二个参数是查询返回的行数,不可传入字段名imdbid指定查询字段,参数类型不匹配导致报错。
// 错误写法
$imdb_id =  $this->db->get('videos','imdbid');
  • 代码3:row() 方法第二个参数传入自定义类名时,返回结果为对象类型,使用数组语法$row['imdbid']取值会报类型错误;同时未指定筛选条件时默认取第一行数据,不符合全量获取imdb id的需求。
// 错误写法
$query = $this->db->query("SELECT * FROM videos;");
$row = $query->row(0, 'videos');
$imdb_id = $row['imdbid'];

正确实现方案

场景1:获取videos表所有行的imdbid数组

$this->db->select('imdbid');
$query = $this->db->get('videos');
$imdb_ids = array_column($query->result_array(), 'imdbid');

场景2:获取指定条件的单行imdbid

// 示例:查询id为1的视频对应的imdbid,不存在则返回空字符串
$imdb_id = $this->db->get_where('videos', ['id' => 1])->row_array()['imdbid'] ?? '';

原生SQL写法

$query = $this->db->query("SELECT imdbid FROM videos");
$imdb_ids = array_column($query->result_array(), 'imdbid');

内容的提问来源于stack exchange,提问作者S M Khirul Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 16:54:07