-2

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

4 回答 4

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()which 将返回根据您的列键入的数组数组。请参阅此处以更好地了解result()row()方法。

于 2013-10-23T16:15:02.467 回答
0

你有数据库配置文件吗?load->database()需要它。$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;
}

其中列对应于电影表中的值之一。

于 2013-10-23T16:18:15.273 回答
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);

希望有帮助,干杯。

于 2013-10-23T18:05:10.700 回答
0

对于您的问题 row() 只返回一个值,它有利于检查 ID,如果您想获取所有行,请使用 result_array() 或简单的 result()

你可以试试这个代码......

    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();
于 2013-10-24T02:43:25.123 回答