我试图从模型向控制器发送数据数组但是当我在控制器上回显时,我只看到第一个值没有值的所有数组。怎么了?
型号:
$sql = "
SELECT car_id
FROM cars
WHERE price= 1";
$res = mysql_query($sql);
$bought_cars= array();
while ($row_ya = mysql_fetch_object($res))
{
$bought_cars[] = $row_ya->car_id;
}
foreach ($bought_cars as $bought_car)
{
return $bought_car;
}
控制器
$bought_car = $this->car_model->car();
echo($bought_car);
提前谢谢你!
答案 0 :(得分:2)
您必须使用Codeigniter的Active Record Query。 在模型中(推荐):
$this->db->select('car_id');
$this->db->from('cars');
$this->db->where('price',1);
$query=$this->db->get();
return $query->result();
在没有活动记录的情况下更新(不推荐):
$sql = "
SELECT car_id
FROM cars
WHERE price= 1";
$res = mysql_query($sql);
$bought_cars= array();
while ($row_ya = mysql_fetch_object($res))
{
$bought_cars[] = $row_ya->car_id;
}
return $bought_cars;//no need to run foreach, you just have to return the array after completing your push operation.
答案 1 :(得分:0)
它以第一个循环结束,返回它得到的第一个值,这就是为什么你在控制器上回显时获得第一个值.Rather这样做返回一个完整的数组。
while ($row_ya = mysql_fetch_object($res))
{
$bought_cars[] = $row_ya->car_id;
}
return $bought_cars;
答案 2 :(得分:0)
你也可以这样使用: -
$sql = "SELECT car_id FROM cars WHERE price= 1";
$query = $this->db->query($sql);
return $query->result();
答案 3 :(得分:0)
您在模型中使用return
,这导致循环/函数结束并仅返回数组中的第一个值。只需完全删除foreach
循环,只需在模型中返回$bought_cars
即可。
为了在控制器中显示数组的所有值,您必须遍历它。
foreach($bought_car as $car) {
echo $car . '<br>';
}
或者,如果您想让它更具可读性,您可以使用:
<pre><?php print_r($bought_car); ?></pre>
答案 4 :(得分:0)
您可以使用有效记录来实现此目的:
模型
$this->db-select('car_id')
$this->db->where('price', 1);
$query = $this->db->get('cars'); if($query->num_rows() > 0){
foreach ($query->result() as $row)
{
$data[] = $row;
}
return $data;
}
控制器
$bought_car = $this->car_model->car(); foreach($bought_car as $car) { echo $car->car_id
}
请记住,您只选择了car_id,这是唯一可用于回显的列