Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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 从一个数据中获取循环数据_Php_Codeigniter - Fatal编程技术网

Php 从一个数据中获取循环数据

Php 从一个数据中获取循环数据,php,codeigniter,Php,Codeigniter,我正在使用codeigniter 我在模型中有两个函数 在第一个函数中,我从一个表中获取所有特定行。这是我想要获得所有产品详细信息的地方 function getProduct() { $shoes = 'SELECT pd.name, pd.id, pd.price FROM product_detail pd

我正在使用codeigniter

我在模型中有两个函数

在第一个函数中,我从一个表中获取所有特定行。这是我想要获得所有产品详细信息的地方

function getProduct() 
    {
        $shoes = 'SELECT pd.name,
                         pd.id, 
                         pd.price

                  FROM product_detail pd
                  LEFT JOIN product_sub_category psc
                  ON pd.sub_category_id = psc.id
                  WHERE psc.name = "Shoes"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();
    }
在第二个函数中,我根据第一个函数中的一行获取所有特定行。这是我想要获得每个产品的所有图像的地方

function getImage()
    {
        $shoes = 'SELECT pim.file_name                      
                  FROM product_img pim
                  LEFT JOIN product_detail pd
                  ON pim.product_detail_id = pd.id
                  WHERE pim.product_detail_id = "'.$row->id.'"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();

    }
但它给了我一些错误

有人能帮我吗?谢谢你的帮助



[更新]

这是我的控制器

在控制器中,我识别
记录
以获取产品,识别
记录
以获取图像

function index() 
    {
        $this->load->model('site_model'); 

        $data = array();
        $query = $this->site_model->getProduct();
        $data['records'] = $query;

        foreach ($query as $row) 
            {
                $id = $row->id; // get ID
                $name = $row->name; // get ID
                $product_image = $this->site_model->getImage($id); // invoke the second method feeding that ID
                $data['recorded'] = $product_image;
            }
        $this->load->view('mothershop', $data);

    } 
这是我的模型

function getProduct() 
    {
        $shoes = 'SELECT pd.name,
                         pd.id, 
                         pd.price

                  FROM product_detail pd
                  LEFT JOIN product_sub_category psc
                  ON pd.sub_category_id = psc.id
                  WHERE psc.name = "Shoes"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();
    }


function getImage($id)
    {
        $shoes = 'SELECT pim.file_name                      
                  FROM product_img pim
                  LEFT JOIN product_detail pd
                  ON pim.product_detail_id = pd.id
                  WHERE pim.product_detail_id = "'.$id.'"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();

    }
这是我对mothershop.php的看法

在本节中,我调用
记录
记录

foreach ($records as $row) 
    {
        echo "<div>".$row->name."</br>";
            foreach ($recorded as $rowed)
                {
                    echo "<img src='".base_url()."upload/thumbs/".$rowed->file_name."'/>";
                }
        echo "</div>"; 
    } 
foreach($记录为$行)
{
回显“$行->名称。”
”; foreach(记录为$rowed) { 回显“文件名”。“/>”; } 回声“; }
然而,我不知道为什么,每种产品的形象都是一样的

function getImage()
    {
        $shoes = 'SELECT pim.file_name                      
                  FROM product_img pim
                  LEFT JOIN product_detail pd
                  ON pim.product_detail_id = pd.id
                  WHERE pim.product_detail_id = "'.$row->id.'"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();

    }
但是如果我在控制器中打印
$product\u图像
,它会为每个产品提供不同的图像

function getImage()
    {
        $shoes = 'SELECT pim.file_name                      
                  FROM product_img pim
                  LEFT JOIN product_detail pd
                  ON pim.product_detail_id = pd.id
                  WHERE pim.product_detail_id = "'.$row->id.'"';

        $categoried = $this->db->query($shoes);
        return $categoried->result();

    }
这里怎么了


提前感谢@Ghost

,因为
$row->id
完全取决于第一个获取方法,目前它超出了范围。要从第一个方法使用该id,只需在第二个方法上添加一个参数,并将其用于第二个查询。更类似于此:

function getImage($id)
然后可以在第二种方法中使用它

因为您没有使用任何方法来说明您如何使用您的方法。请考虑这个例子:

第一种方法用法(控制器):

模型方法:

function getImage($id)
{
    $shoes = "SELECT pim.file_name                      
              FROM product_img pim
              LEFT JOIN product_detail pd
              ON pim.product_detail_id = pd.id
              WHERE pim.product_detail_id = '$id' ";

    $categoried = $this->db->query($shoes);
    return ($categoried->num_rows() > 0) ? $categoried->row() : null;   
}

这是它的基本思想,我们不知道发生了什么,也不知道如何将其他所有内容粘合到控制器上,调整它以适应您的代码库。

其中一个错误是未定义的变量:行中的行“WHERE pim.product_detail_id=”。$row->id"';'显然,$row对象不存在。在哪里声明$row?很可能是因为您没有输入该id。只需在第二个函数参数
函数getImage($id)
中提供它。然后在查询中使用
$id
。目前,它超出了范围。对不起,我编辑了你的答案。请复习一下。非常感谢。@klaudia无需编辑答案,只需编辑问题,然后ping我的名字,总之,最后,在将数据加载到视图之前,只需添加它。这里有一个例子,请阅读我的更新问题,Ghost。我在这里面临另一个问题。@klaudia不,按照我写的,这应该在每个产品的第一个循环中添加文件名,这就是为什么我已经在控制器中设置了foreach($products as&$row){(参考)然后在循环内
$row->file_name=$product_image->file_name;
,这样在加载数据时,在您的视图中,您应该能够使用
->file_name
@klaudia使用我在粘贴箱中设置的文件,无需使用
录制的
循环,
->file_name
已经在
记录中了