我试图列出我的SQL查询的结果(从一个类别中获取所有电影),但我无法弄清楚如何获取所有行而不是只有一行。
以下是代码:
$this->load->database();
$sql = 'SELECT * FROM movies WHERE category = "'.$movies_category.'";';
$query = $this->db->query($sql);
$data = $query->row();
$this->response($data, 200);
我试过了:
while($row = mysql_fetch_assoc($query)){
$data = $query->row();
}
$this->response($data, 200);
它不起作用。有什么建议吗?谢谢!
答案 0 :(得分:0)
$this->load->database();
$sql = 'SELECT * FROM movies WHERE category = "'.$movies_category.'";';
$query = $this->db->query($sql);
$data = $query->result();
遍历$data
数组:
foreach($data AS $row)
{
//to retrieve the data from each row.
$col1 = $row->col1;
$col2 = $row->col2;
}
使用result()
代替row()
。 result()
将返回您的结果对象数组。或者,您可以使用result_array()
,它将根据您的列重建一系列数组。有关result()
和row()
方法的更好概述,请参阅here。
答案 1 :(得分:0)
您有数据库配置文件吗? load-> database()requires it。 $ movies_category来自哪里?这将让您迭代结果。
$this->load->database();
$sql = 'SELECT * FROM movies WHERE category = "'.$movies_category.'";';
$query = $this->db->query($sql);
foreach ($query->result() as $row)
{
echo $row->column;
}
其中列对应于电影表中的一个值。
答案 2 :(得分:0)
我很惊讶没有人提到在SQL中使用变量(可能是用户输入)的潜在危险。您应该认真考虑使用查询绑定或CodeIgniter的活动记录功能来构建更安全的查询。
考虑以下问题的解决方案:
$this->load->database();
$sql = 'SELECT * FROM movies WHERE category = ?';
$query = $this->db->query($sql, array($movies_category));
// $data = $query->result(); // returns result as an array of objects
$data = $query->result_array(); // returns result as array
$this->response($data, 200);
我假设这是针对某种API的?如果是这样,请考虑使用result_array()方法,因为它可能更适合您所需的输出,并且非常容易转换为JSON:
$json_data = json_encode($data);
希望有所帮助, 欢呼声。
答案 3 :(得分:0)
对于你的问题,row()只返回一个值,它有利于检入ID,如果你想获取所有行,则使用result_array()或简单结果()
你可以试试这个代码......
Model:
function get_movies($movies_category){
$this->db->where("category",$movies_category);
$query = $this->db->get("movies");
return $query->result_array();
}
Controller:
$this->data['movies'] = $this->'name of model'->get_movies('here is the movie categories');
View:
foreach($movies as $m){
print_r($m);
}
exit();
注意你可以直接将模型中的函数代码添加到控制器中,如果你想直接将它添加到控制器中......
$this->data['movies] = $this->db->get('movies')->result_array();