【问题标题】:Issues converting stdClass to array将 stdClass 转换为数组的问题
【发布时间】:2020-06-26 18:55:23
【问题描述】:

我已将我的一个网站转换为使用 PDO 数据库查询。除了一个之外,所有查询都运行良好,我花了一整天的时间试图解决这个问题,但没有什么对我有用,所以作为最后的手段,我在这里寻求一些建议。

这是我遇到问题的功能

    public function getTransactions($iProfileId)
    {

        $rStmt = Db::getInstance()->prepare('SELECT * FROM' . Db::prefix(DbTableName::GIFT_TX) .
                                            'WHERE profileId = :profileId ' .
                                            'ORDER BY createDate ASC, txId ASC');
        
        $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT);

        $rStmt->execute();
        $this->getTxs = $rStmt->fetch(\PDO::FETCH_OBJ);
        Db::free($rStmt);
        
                    
        return $this->getTxs;
    }
    

即使有很多其他行并且作为对象,它也会返回单行


object(stdClass)#47 (8) { ["txId"]=> string(1) "8" ["profileId"]=> string(3) "861" ["type"]=> string(6) "credit" ["credits"]=> string(2) "25" ["createDate"]=> string(19) "2020-06-26 10:48:55" ["isDelete"]=> string(1) "0" ["price"]=> string(4) "0.05" ["merchant"]=> string(6) "PayPal" }


我需要将其作为数组返回并获取 profileId = :profileId 的所有行

我已经尝试了所有可以在网上找到的方法,但都没有成功。

【问题讨论】:

  • 你只调用一次fetch(),你用\PDO::FETCH_OBJ调用它,所以你最终会得到1行作为对象!
  • PHP 文档说... PDO::FETCH_OBJ (integer) 指定 fetch 方法应将每一行作为一个对象返回,其属性名称对应于结果集中返回的列名。跨度>
  • 我有超过 200 个函数,这是我唯一遇到的问题。
  • manual page of fetch()PDO::FETCH_OBJ:返回一个匿名对象,其属性名称对应于结果集中返回的列名
  • 试试fetchAll()\PDO::FETCH_ASSOC

标签: php mysql database pdo


【解决方案1】:

试试这个代码

$this->getTxs = $rStmt->fetchAll(PDO::FETCH_ASSOC);
    

如有疑问,请查看以下网址:

https://www.php.net/manual/en/pdostatement.fetchall.php

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2016-12-25
    • 2020-03-20
    • 2011-11-08
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多