我在模型中有以下功能,但它会一直返回:
消息: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();
答案 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) {
/* ... */
}