【问题标题】:Getting rows from a database query into an array in CodeIgniter将数据库查询中的行放入 CodeIgniter 中的数组中
【发布时间】:2017-08-24 21:28:03
【问题描述】:

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

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

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

例如,这是获取 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

我该如何解决这个问题?

【问题讨论】:

  • 我认为您在核心 PHP 方面做了很多工作。请浏览 codeigniter 的文档并检查活动记录查询的工作原理。

标签: php mysql arrays codeigniter


【解决方案1】:

您正在将 codeigniter 查询构建器类与 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();

【讨论】:

  • 这正是我们在使用codeigniter时必须要做的
  • 谢谢,这很有帮助。
猜你喜欢
  • 2020-10-22
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多