【问题标题】:Kohana 2.3.4 : MySQL query to JSONKohana 2.3.4:对 JSON 的 MySQL 查询
【发布时间】:2015-06-09 04:46:29
【问题描述】:

我在 Kohana 2.3.4 中管理一个项目,我需要为我的 android 后端创建一个 API。我正在做的是在我的模型上发送一个返回$result的查询。

$query = "select product.deal_id,product.deal_key,p..."

$result = $this->db->query($query);

我不确定$result 是对象还是数组 这由 4 行 8 列组成。我需要将 $result 更改为 json 格式。我目前正在通过回显来做到这一点。

echo json_encode($result);

这会返回一个空的 json {}

我可以通过遍历 $result 在我的视图上使用相同的查询

foreach ($result as $h){
        echo $h->main_key;
}

我这样做是对的还是我在此连接上的$result 没有行?

【问题讨论】:

  • 也许 -> 查询被炸毁或结果集中没有行。我们怎么知道
  • @AsConfused 嗨,我已经测试了 sql 查询,正如我所说,它在 phpmyadmin 上返回 4 行和 8 列。 $this->db 也是我的 Database 对象。
  • 但是我们现在不在 phpmyadmin 上
  • 我快速查看发现 Kohana (v3) 正在使用 PDO,因此在调用 PDO::query 后,您不会将元组作为数组/对象获取。您会得到一个 PDOStatement,您必须在其上执行 fetch 或 fetchAll 。有关详细信息,请参阅 PDOStatement::fetch。 $result = $this->db->query($query)->fetchAll(PDO::FETCH_ASSOC);
  • @Basti 谢谢你,我用你的建议解决了我的问题。而不是fetchAll,我所要做的就是打电话给as_array()

标签: mysql json kohana kohana-2


【解决方案1】:

我发现我使用 Kohana 调试来了解我的 result 是对象还是数组。调用后

echo Kohana::debug($result);

我发现它是一个对象,因此在转换为 json 对象时结果为空。我还尝试使用mysql_fetch_assoc 获取关联数组,它实际上需要一个 mysql 查询对象。这做到了 不起作用,因为该对象是由我的 ORM 对象创建的。然后我通过调用解决了这个问题

$result = $this->db->query($query)->as_array();

这返回了一个数组并解决了我的问题。

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多