$ data = $ query-> row();只返回一行

时间:2013-10-23 15:51:55

标签: sql codeigniter row

我试图列出我的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);

它不起作用。有什么建议吗?谢谢!

4 个答案:

答案 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();