我正在尝试将数组传递给具有查询的模型。我不确定如何正确传递数组,或者我必须以某种方式操纵数组。
我有这个数组:
Array
(
[0] => 1
[1] => 2
)
我有一个控制器:
$ratings = $this->login_model->get_ratings($mechanicIds); // get the mechanic ratings
我有这个型号:
function get_ratings($mechanicId)
{
$sql = "select m.mechanic_id,
m.mechanic_name,
m.city,
m.state,
count(mr.rating_id) as num_ratings,
round(avg(mr.rating_id),2) avg_rating
from mechanic m, mechanic_rating mr, rating r
where m.mechanic_id in (?)
and m.mechanic_id = mr.mechanic_id
and mr.rating_id = r.rating_id";
$query = $this->db->query($sql, $mechanicId);
if($query->num_rows() > 0)
{
return $query->result_array();
}
else
{
return false;
}
}
它实际上返回结果,但问题是它只返回结果1行应该返回2,因为我的数组中有2个结果。谁知道我做错了什么?
答案 0 :(得分:2)
我发现这个问题有所帮助。
以下是我使用的代码。
包含此内容的控制器:
$mIds_size = count($mIds);
$i = 1;
foreach($mIds as $row)
{
if($i == $mIds_size)
{
$mechanicIds .= $row;
}
else
{
$mechanicIds .= $row.', ';
}
$i++;
}
$ratings = $this->login_model->get_ratings($mechanicIds); // get the mechanic ratings
包含此内容的模型:
function get_ratings($mechanicId)
{
$this->db->escape($mechanicId);
$sql = "select m.mechanic_id,
m.mechanic_name,
m.city,
m.state,
count(mr.rating_id) as num_ratings,
round(avg(mr.rating_id),2) avg_rating
from mechanic m, mechanic_rating mr, rating r
where m.mechanic_id in ($mechanicId)
and m.mechanic_id = mr.mechanic_id
and mr.rating_id = r.rating_id
group by mechanic_id";
$query = $this->db->query($sql, $mechanicId);
if($query->num_rows() > 0)
{
return $query->result_array();
}
else
{
return false;
}
}
答案 1 :(得分:1)
更改此行:
$query = $this->db->query($sql, $mechanicId);
到此:
$query = $this->db->query($sql, array(implode(', ',$mechanicId)));