将CI查询存储到数组中?

时间:2012-10-05 23:16:54

标签: php mysql codeigniter

我在模型中有以下功能,但它会一直返回:

消息:mysql_fetch_array():提供的参数不是有效的MySQL结果资源

我为我的生活无法弄清楚原因。

    function getNames() {
    $query1 = $this->db->query("SELECT * FROM Device_tbl ORDER BY Manufacturer");   
    $dev = array();
    while($row = mysql_fetch_array($query1))
        {
            $manu =  $row['Manufacturer'];
            $mod = $row['Model'];
            $dev[] = $manu.' '.$mod;
        }
    return $dev->result();
}

有人可以帮忙吗?

CodeIgniter的答案是:

    $query1 = $this->db->query("SELECT * FROM table");  

    foreach($query1->result_array() as $row)
        {
            $manu =  $row['column1'];
            $mod = $row['column2'];
            echo $manu.' '.$mod;
        }
    return $query1->result();

2 个答案:

答案 0 :(得分:5)

问题是你将CodeIgniter数据库方法与内置的PHP数据库方法混合在一起。 mysql_fetch_array需要资源,而不是CI查询对象。

查看获取结果的docs

答案 1 :(得分:1)

有时,当您需要处理大量数据(行)时,您可能希望使用本机php mysql函数(如mysql_fetch_array)来节省内存(为了最好的内存保存,我更喜欢mysql_fetch_row)。在这种情况下,您可以使用:

try {

    $query = $this->db->query("SOME QUERY");


    while($row = mysql_fetch_row($query->result_id)) {

        /* ... */

    }

    $query->free_result(); //we talked about memory saving right ;-)
} catch(Exception $e) {
    /* ... */
}