gpt4 book ai didi

php - PDO Foreach 获取循环返回具有特定 id 的第一行,其余为 false

转载 作者:行者123 更新时间:2023-11-29 10:23:46 25 4
gpt4 key购买 nike

我遇到问题,函数将对象返回为 false。该函数首先获取特定组中所有用户的列表,然后使用该数组获取每个用户发布的每条消息,并应将所有消息作为一个大消息数组返回。欢迎更正标题。

 public function listMessages($group_id){ 
$db = initDb();
$getGroupUsers = $db->prepare("SELECT user_id FROM in_group WHERE group_id = :group_id");
$getGroupUsers->bindParam(":group_id", $group_id, PDO::PARAM_INT);
$getGroupUsers->execute();
$users = $getGroupUsers->fetchAll(PDO::FETCH_ASSOC);
$messages = array();
foreach ($users as $item) {
$getMessage = $db->prepare("SELECT * FROM task_messages WHERE user_id = :user_id ORDER BY visited ASC");
$getMessage->bindParam(":user_id", $item['user_id'], PDO::PARAM_INT);
$getMessage->execute();
if($getMessage->rowCount() > 0){
$message = $getMessage->fetchObject();
array_push($messages, $message);
}
}
return json_encode($messages);
}

但由于某种原因,它只为每个用户获取一条消息。我通过添加来自同一用户的 3 条消息并调用此函数来对此进行测试。

result as image

但是如果我添加来自其他用户的消息

result when adding another users message

这是我的数据库,如下图所示

database image

最佳答案

文档说 PDOStatement::fetchObject:

Returns an instance of the required class with property names that correspond to the column names or FALSE on failure.

说它返回一个类的实例(在你的例子中是stdclass),但没有关于多个实例或数组的信息。您可能必须循环遍历结果集,直到 fetchObject 返回 false。或者像上面的查询中那样使用 fetchAll。

http://php.net/manual/en/pdostatement.fetchobject.php

关于php - PDO Foreach 获取循环返回具有特定 id 的第一行,其余为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com