Php 将CI查询存储到数组中?
我在一个模型中有以下函数,但它不断返回: 消息:mysql\u fetch\u array():提供的参数不是有效的mysql结果资源 我一辈子都不知道为什么Php 将CI查询存储到数组中?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在一个模型中有以下函数,但它不断返回: 消息:mysql\u fetch\u array():提供的参数不是有效的mysql结果资源 我一辈子都不知道为什么 function getNames() { $query1 = $this->db->query("SELECT * FROM Device_tbl ORDER BY Manufacturer"); $dev = array(); while($row = mysql_fetch_arra
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();
问题是您将CodeIgniter数据库方法与内置PHP数据库方法混合使用
mysql\u fetch\u array
需要的是资源,而不是CI查询对象
查看关于获取结果的信息。问题在于您将CodeIgniter数据库方法与内置PHP数据库方法混合使用
mysql\u fetch\u array
需要的是资源,而不是CI查询对象
查看获取结果。有时,当您需要处理大量数据(行)时,您可能希望使用本机php mysql函数(如mysql\u fetch\u数组)来节省内存(为了节省内存,我更喜欢mysql\u fetch\u行)。在这种情况下,您可以使用:
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) {
/* ... */
}
有时,当您需要处理大量数据(行)时,您可能希望使用本机php mysql函数(如mysql_fetch_数组)来节省内存(为了节省内存,我更喜欢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) {
/* ... */
}
这样看来,您实际上并没有连接到数据库。或者您的查询可能有错误,但我看不到您在进行任何调试。看起来他将CodeIgniter查询与mysql查询混合在一起。附带说明:如果
$dev===array()
,则您无法执行$dev->result()代码>然后显示您实际上没有连接到数据库。或者您的查询可能有错误,但我看不到您在进行任何调试。看起来他将CodeIgniter查询与mysql查询混合在一起。附带说明:如果$dev===array()
,则您无法执行$dev->result()代码>好,所以我可以工作了,但是$query1中的数组包含所有内容,而不仅仅是我指定的2列?您可以指定它在查询中返回的列。您有SELECT*FROM
,它将选择所有列。确定是有意义的。我已经把它整理好了,但是我有几个同名的制造商,它只返回每个制造商的第一个,所以我开始工作了,但是我从$query1得到的数组包含了所有内容,而不仅仅是我指定的2列?您可以指定它在查询中返回的列。您有SELECT*FROM
,它将选择所有列。确定是有意义的。所以我把它分类了,但是我有几个同名的制造商,它只返回每个制造商的第一个