Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 独特的mysql结果-codeigniter_Php_Mysql_Codeigniter - Fatal编程技术网

Php 独特的mysql结果-codeigniter

Php 独特的mysql结果-codeigniter,php,mysql,codeigniter,Php,Mysql,Codeigniter,我用两张桌子来储存关于汽车的信息。在第一个表中有一个关于汽车制造商等的信息,第二个表包含每辆汽车的图像。我的桌子如下所示: car_information car_images --------------- --------- id | 2 car_id 2 | img1 car_make | Fiat car_id 2 | img2 color | Blue car_id 2 | img3 etc .... 正如你所看到的,每辆车都有三

我用两张桌子来储存关于汽车的信息。在第一个表中有一个关于汽车制造商等的信息,第二个表包含每辆汽车的图像。我的桌子如下所示:

car_information    car_images
---------------    ---------
id       | 2       car_id 2 | img1
car_make | Fiat    car_id 2 | img2
color    | Blue    car_id 2 | img3
etc ....
正如你所看到的,每辆车都有三张图片

这是我用来获取结果的查询

 $this->db->select('
           c.id,
           c.car_make,
           c.car_color,
           ci.image
        ');       

  $this->db->from('car_information c');
  $this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
  return $this->db->get();  
一切正常,但我面临的问题是结果重复

例如:

2 Fiat Blue img1
2 Fiat Blue img2
2 Fiat Blue img3

3 BMW white img4
3 BMW white img5
这样做的结果是这样的

2 Fiat Blue img1 | img 2 | img 3
我想在一行中获取所有信息。
我知道我可以为您提供两个查询,但我想知道如何处理单个查询?

您可以加入两个表,这样,如果有多个图像,您可以从汽车信息中获得相同的结果!您必须以两个查询的方式执行此操作,或者仅使用第一个结果数组提取汽车信息,然后循环使用图像数据。

您可以加入两个表,以便在有多个图像时从汽车信息中获得相同的结果!您必须将此作为两个查询来执行,或者只使用第一个结果数组来提取汽车信息,然后在其上循环并使用图像数据。

我想这就是您要寻找的答案。 请在此处阅读codeigniter用户指南

您的查询是正确的,但SQL不是这样工作的。你得到你要求的原始数据,格式化必须用你的编程语言(在本例中是php)完成,据我所知

$this->db->select('
         c.id,
         c.car_make,
         c.car_color,
         ci.image
     ');       

$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$query = $this->db->get();  

$i = 1;
foreach ($query->result() as $row) {
 $car_array[$row->car_id][$i++] = $row->image;
}
var_dump($car_array);
这将创建一个数组,该数组将包含一个汽车id的所有图像。我想这就是您要寻找的答案。 请在此处阅读codeigniter用户指南

您的查询是正确的,但SQL不是这样工作的。你得到你要求的原始数据,格式化必须用你的编程语言(在本例中是php)完成,据我所知

$this->db->select('
         c.id,
         c.car_make,
         c.car_color,
         ci.image
     ');       

$this->db->from('car_information c');
$this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
$query = $this->db->get();  

$i = 1;
foreach ($query->result() as $row) {
 $car_array[$row->car_id][$i++] = $row->image;
}
var_dump($car_array);

这将创建一个数组,该数组将包含汽车id的所有图像添加以下行:
$this->db->groupby('c.id')

像这样:

 $this->db->select('
           c.id,
           c.car_make,
           c.car_color,
           ci.image
        ');       

  $this->db->from('car_information c');
  $this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
  $this->db->group_by('c.id');
  return $this->db->get();  

这将在MySQL中起作用,因为在MySQL中,
groupby
可以用作
distinct
的同义词

添加以下行:
$this->db->group_by('c.id')

像这样:

 $this->db->select('
           c.id,
           c.car_make,
           c.car_color,
           ci.image
        ');       

  $this->db->from('car_information c');
  $this->db->join('car_images ci', 'ci.car_id = c.id', 'left');
  $this->db->group_by('c.id');
  return $this->db->get();  

这将在MySQL中起作用,因为在MySQL中,
groupby
可以用作
distinct
的同义词

这个要求有理由吗?这个要求有理由吗?