mysql - 查询生成器 - codeigniter

标签 mysql codeigniter query-builder

我在构建使用三个表的查询时遇到问题。

如果我将查询写为:

$query = "select domains.ID, domains.Name, domains.IP, 
database_info.DB_Name, database_info.DB_User, database_info.DB_Pass, 
ftp.FTP_User, ftp.FTP_Pass from domains
left join database_info on domains.ID = database_info.Domain_ID
left join ftp on domains.ID = ftp.Domain_ID
where domains.ID = $ID";

                $query = $this->db->get();
                if($query->num_rows()>0){
                    return $query->result();
                }

我收到错误号 1096 没有使用表 SELECT * 但是我使用查询生成器编写查询:

       $this->db->select('domains.ID','domains.Name','domains.IP',
       'database_info.DB_Name','database_info.DB_User',
       'database_info.DB_Pass','ftp.FTP_User','ftp.FTP_Pass');
        $this->db->from('domains');
        $this->db->join('database_info','domains.ID =
        database_info.Domain_ID', 'left');
        $this->db->join('ftp','domains.ID = ftp.Domain_ID','left');
        $this->db->where('domains.ID',$ID);
        $query = $this->db->get();
        if($query->num_rows()>0){
            return $query->result();
        }

查询运行但仅返回domains.ID 接受想法和建议

最佳答案

试试这个

$query = $this->db
    ->select('domains.ID,domains.Name,domains.IP, database_info.DB_Name,database_info.DB_User,database_info.DB_Pass,ftp.FTP_User,ftp.FTP_Pass')
    ->from('domains')
    ->join('database_info','domains.ID = database_info.Domain_ID', 'left')
    ->join('ftp','domains.ID = ftp.Domain_ID','left')
    ->where('domains.ID',$ID)
    ->get();
if($query->num_rows()>0)
{
    return $query->result();
}

重点在于您的 select 语句 - 查询生成器只接受整个 select 语句的一个参数,而不是像您那样多

and please for the sake of security - never ever try to execute sql statements without escaping them - CI's query builder will do this per default - but your first example is pretty dangerous and widely open to sql injections

关于mysql - 查询生成器 - codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48804137/

相关文章:

mysql - MySQL 如何处理并发插入?

html - Twig 和 CodeIgniter 表单渲染问题。表单显示为字符串而不是 HTML 表单

laravel - Laravel 4 中检索特定日期范围内数据记录的查询

Yii2 ActiveQuery 'OR LIKE' 过滤器

MySQL垂直连接多个表

MySQL日期差异迭代查询——精简查询或优化数据结构

mysql - 在 MySQL 中执行 LEFT JOIN 与缓存数据的成本

javascript - 代码点火器

javascript - Codeigniter 从数据库自动完成

symfony - Doctrine2 QueryBuilder - 字段名称中的变量