Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在SQL查询中使用LIKE with WHERE的Codeigniter_Php_Mysql_Sql_Codeigniter - Fatal编程技术网

Php 在SQL查询中使用LIKE with WHERE的Codeigniter

Php 在SQL查询中使用LIKE with WHERE的Codeigniter,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,在codeigniter中,我有这样一个查询: $this->db->select('*', false); $this->db->from('video as v'); $this->db->where('v.start_date <=', 'NOW()', false); $this->db->like('v.title', $keywords); $this->db->or_like(

在codeigniter中,我有这样一个查询:

    $this->db->select('*', false);
    $this->db->from('video as v');
    $this->db->where('v.start_date <=', 'NOW()', false);
    $this->db->like('v.title', $keywords);
    $this->db->or_like('v.title_tw', $keywords);
    $this->db->or_like('v.title_cn', $keywords);
    $query = $this->db->get();
    return $query->result_array();
$sql = SELECT * FROM video as v where v.start_date <= NOW() AND (v.title like ? OR v.title_tw like ? or v.title_cn like ?);
$query = $this->db->query($sql, array($keywords, $keywords, $keywords));
$this->db->select('*',false);
$this->db->from('video as v');

$this->db->where('v.start\u date您可以这样尝试:

    $this->db->select('*', false);
    $this->db->from('video as v');
    $this->db->where('v.start_date <=', 'NOW()', false);
    $this->db->like('v.title', $keywords);
    $this->db->or_like('v.title_tw', $keywords);
    $this->db->or_like('v.title_cn', $keywords);
    $query = $this->db->get();
    return $query->result_array();
$sql = SELECT * FROM video as v where v.start_date <= NOW() AND (v.title like ? OR v.title_tw like ? or v.title_cn like ?);
$query = $this->db->query($sql, array($keywords, $keywords, $keywords));
$sql=SELECT*FROM video as v其中v.start_date db->query($sql,array($keywords,$keywords));
对于CodeIgniter 3.x:

您可以在查询中使用括号:

    $this->db->select('v.*,t.name,t.name_tw,t.name_cn, t.image_url as profile_pic, COALESCE(b.duration, bt.duration, bc.duration) AS duration, COALESCE(b.thumbnail, bt.thumbnail, bc.thumbnail) as thumbnail', false);
        $this->db->from('video as v');
        $this->db->join('teacher as t', 'v.teacher_id = t.id');
        $this->db->join('video_tag as vt', 'v.id = vt.video_id', 'left');
        $this->db->join('brightcove as b', 'v.video = b.video_id', 'left');
        $this->db->join('brightcove as bt', 'v.video_tw = bt.video_id', 'left');
        $this->db->join('brightcove as bc', 'v.video_cn = bc.video_id', 'left');
        $this->db->where('v.is_delete', false);
        $this->db->where('v.start_date <=', 'NOW()', false);
        $this->db->group_start();
        $this->db->like('v.title', $keywords);
        $this->db->or_like('v.title_tw', $keywords);
        $this->db->or_like('v.title_cn', $keywords);
        $this->db->or_like('vt.tag', $keywords);
        $this->db->group_end();
        $this->db->group_by('v.id');
        $query = $this->db->get();
$this->db->select('v.*、t.name、t.name\u tw、t.name\u cn、t.image\u url作为配置文件\u pic,COALESCE(b.duration、bt.duration、bc.duration)作为持续时间,COALESCE(b.缩略图、bt.缩略图、bc.缩略图)作为缩略图),false);
$this->db->from('video as v');
$this->db->join('teacher as t','v.teacher_id=t.id');
$this->db->join('video_标记为vt','v.id=vt.video_id','left');
$this->db->join('brightcove as b','v.video=b.video_id','left');
$this->db->join('brightcove as bt','v.video_tw=bt.video_id','left');
$this->db->join('brightcove as bc','v.video\u cn=bc.video\u id','left');
$this->db->where('v.is\u delete',false);

$this->db->where('v.start\u date最后,我创建了这样的查询,似乎工作正常:

function search_video($keywords) {
    $this->db->select('v.*,t.name,t.name_tw,t.name_cn, t.image_url as profile_pic, COALESCE(b.duration, bt.duration, bc.duration) AS duration, COALESCE(b.thumbnail, bt.thumbnail, bc.thumbnail) as thumbnail', false);
    $this->db->from('video as v');
    $this->db->join('teacher as t', 'v.teacher_id = t.id');
    $this->db->join('video_tag as vt', 'v.id = vt.video_id', 'left');
    $this->db->join('brightcove as b', 'v.video = b.video_id', 'left');
    $this->db->join('brightcove as bt', 'v.video_tw = bt.video_id', 'left');
    $this->db->join('brightcove as bc', 'v.video_cn = bc.video_id', 'left');
    $this->db->where("(v.is_delete = false AND v.start_date <= NOW()) AND (v.title LIKE '$keywords' OR  v.title_tw LIKE '$keywords' OR v.title_cn LIKE '$keywords' OR vt.tag LIKE '$keywords')");
    $this->db->group_by('v.id');
    $query = $this->db->get();
    return $query->result_array();
}
功能搜索\u视频($keywords){
$this->db->选择('v.*,t.name,t.name\u tw,t.name\u cn,t.image\u url作为配置文件\u图片,合并(b.duration,bt.duration,bc.duration)作为持续时间,合并(b.thumboil,bt.thumboil,bc.thumboil)作为缩略图),false);
$this->db->from('video as v');
$this->db->join('teacher as t','v.teacher_id=t.id');
$this->db->join('video_标记为vt','v.id=vt.video_id','left');
$this->db->join('brightcove as b','v.video=b.video_id','left');
$this->db->join('brightcove as bt','v.video_tw=bt.video_id','left');
$this->db->join('brightcove as bc','v.video\u cn=bc.video\u id','left');

$this->db->where(“(v.is_delete=false和v.start_date非常感谢您的帮助。问题是实际查询非常复杂,因此使用单行查询可能不是这样simple@user782104-好的,我看到您对实际查询的新编辑。您应该仍然能够使用表示每个
$keywo的
参数定义完整的SQL查询rds
输入并使用
db->query()
方法,因为其他一切都是静态的。可能还是一个选项。谢谢,但发现当前的codeigniter是2.x.x,有解决方法吗?谢谢
$this->db->select('v.*,t.name,t.name_tw,t.name_cn, t.image_url as profile_pic, COALESCE(b.duration, bt.duration, bc.duration) AS duration, COALESCE(b.thumbnail, bt.thumbnail, bc.thumbnail) as thumbnail', false);
    $this->db->from('video as v');
    $this->db->join('teacher as t', 'v.teacher_id = t.id');
    $this->db->join('video_tag as vt', 'v.id = vt.video_id', 'left');
    $this->db->join('brightcove as b', 'v.video = b.video_id', 'left');
    $this->db->join('brightcove as bt', 'v.video_tw = bt.video_id', 'left');
    $this->db->join('brightcove as bc', 'v.video_cn = bc.video_id', 'left');
    $this->db->where('v.is_delete', false);
    $this->db->where('v.start_date <=', 'NOW()', false);
    $this->db->where("( v.title LIKE '%{$keywords}%'", null, FALSE);
    $this->db->or_like('v.title_tw', $keywords);
    $this->db->or_like('v.title_cn', $keywords);
    $this->db->where("OR vt.tag LIKE '%{$keywords}%' )", null, FALSE);
    $this->db->group_by('v.id');
function search_video($keywords) {
    $this->db->select('v.*,t.name,t.name_tw,t.name_cn, t.image_url as profile_pic, COALESCE(b.duration, bt.duration, bc.duration) AS duration, COALESCE(b.thumbnail, bt.thumbnail, bc.thumbnail) as thumbnail', false);
    $this->db->from('video as v');
    $this->db->join('teacher as t', 'v.teacher_id = t.id');
    $this->db->join('video_tag as vt', 'v.id = vt.video_id', 'left');
    $this->db->join('brightcove as b', 'v.video = b.video_id', 'left');
    $this->db->join('brightcove as bt', 'v.video_tw = bt.video_id', 'left');
    $this->db->join('brightcove as bc', 'v.video_cn = bc.video_id', 'left');
    $this->db->where("(v.is_delete = false AND v.start_date <= NOW()) AND (v.title LIKE '$keywords' OR  v.title_tw LIKE '$keywords' OR v.title_cn LIKE '$keywords' OR vt.tag LIKE '$keywords')");
    $this->db->group_by('v.id');
    $query = $this->db->get();
    return $query->result_array();
}