Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 在codeigniter中不工作的条件下使用多个连接查询?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 在codeigniter中不工作的条件下使用多个连接查询?

Php 在codeigniter中不工作的条件下使用多个连接查询?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我需要一个这样的问题 SELECT * FROM (`users`) LEFT JOIN `users_phone_numbers` ON `users`.`id`= `users_phone_numbers`.`user_id` LEFT JOIN `phone_number` ON (`phone_number`.`id`= `users_phone_numbers`.`phone_num_id` AND

我需要一个这样的问题

SELECT * FROM (`users`) 
     LEFT JOIN `users_phone_numbers`     
              ON `users`.`id`= `users_phone_numbers`.`user_id` 
     LEFT JOIN `phone_number`
             ON (`phone_number`.`id`= `users_phone_numbers`.`phone_num_id` AND users_phone_numbers.is_active = 1)
WHERE `users`.`id` = 56
我在codeigniter中有这样的代码

$this->db->select('*');
$this->db->from('users');
$this->db->join('users_phone_numbers',
                              'users.id= users_phone_numbers.user_id',
                              'left');
            $this->db->join('phone_number',
                              '(phone_number.id= users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1)',
                              'left'); 
$this->db->where('users.id = '. $id); 
 $result =  $q->result_array(); 
但我犯了这个错误


如果您检查Codeigniter对条件功能的处理,您将看到以下内容:

// Strip apart the condition and protect the identifiers
if (preg_match('/([\w\.]+)([\W\s]+)(.+)/', $cond, $match))
Codeigniter正在从查询中剥离开口支架。您不能在WHERE子句中移动LEFT JOIN附加子句来解决此问题吗

编辑:


您需要删除
连接的第二个条件

 $this->db->join('phone_number',
                              'phone_number.id= users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1',
                              'left'); 

拆下如上所述的支架。在没有括号的情况下它对我有效

当你加入一个电话号码时,你真的在条件列表中有一个开始括号吗?因为在你的图像中,这部分看起来像是
…在`phone\u number`.`id`.
上加入`phone\u number`,而不是在`phone\u number`.`id`.
上加入`phone\u number`(`phone\u number`.`id`.我已经加入了”(“在条件下。我检查了这个”)在代码中5次为什么不尝试从条件中删除括号。然后将执行查询,但结果是错误的为什么codeigniter删除”(“on condition?
 $this->db->join('phone_number',
                              'phone_number.id= users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1',
                              'left');