将数据库查询中的行转换为CodeIgniter中的数组

时间:2017-03-30 19:16:15

标签: php mysql arrays codeigniter

所以我有以下数据库表名为“relacionproveedorfamilia”

-----------------------------
| idProveedor | idFamilia   | 
-----------------------------
|      5      |      1      |
-----------------------------
|      5      |      2      |
-----------------------------
|      6      |      2      |
-----------------------------  

我使用一个函数,我提供idProveedor的值,它应该返回一个idFamilia值属于提供的idProveedor的数组。

例如,这是获取idProveedor = 5

的所有idFamilia的查询
SELECT idFamilia FROM relacionproveedorfamilia WHERE idProveedor = 5;

查询结果为:

---------------
| idFamilia   | 
---------------
|      1      |
---------------
|      2      |
---------------

我正在尝试将查询结果放入数组中,因此我可以在视图中显示内容。

在我的模型Proveedormodel中,我有以下功能,我通过检查本网站中的其他类似问题进行编码。

public function obtenerIdFamiliaProveedor($idProveedor){
     $query = $this->db->select('idFamilia')->from('relacionproveedorfamilia')->where('idProveedor', $idProveedor);
     $arrayFamilias = array();

     while($row = mysql_fetch_assoc($query)){
         $arrayFamilias[] = $row;
     }

     return $arrayFamilias;
 }

但在我看来,我收到错误消息:

Message: mysql_fetch_assoc() expects parameter 1 to be resource, object given

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您正在将codeigniter Query构建器类与mysql_函数混合使用。你为什么这样做?

您必须更改代码:

while($row = mysql_fetch_assoc($query)){

到此:

foreach ($query->result_array() as $row)

您需要在查询结尾处添加get方法:

$query = $this->db->select('idFamilia')->from('relacionproveedorfamilia')->where('idProveedor', $idProveedor)->get();