【发布时间】: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。