【问题标题】:Query returns empty array查询返回空数组
【发布时间】:2023-04-03 08:04:01
【问题描述】:

我正在尝试从我的数据库中查询一些数据。我正在尝试做GET 并将它们放入数组中以将其输出为JSON。但是它返回空数组。我的问题是为什么因为我的数据库包含信息并且我知道我的连接等是正确的,因为我开始工作POST

我正在使用 Slim Framework v3 并用于连接 PDO

这就是我想要做的:

$app->get('/users/get', function ($request, $response, $args) {
require 'db.class.php';
$database = new Database();
$database->query("SELECT * FROM `workbungee`.`user`");
$users = array();
while ($row = mysql_fetch_assoc($database)) {

    $users[] = $row;
}
    $struct = array("User" => $users);
    print json_encode($struct);
    return $response->write("Hello " . count($jobArray));

});

这是它返回的内容:

{
  "User": []
}

在 db.class.php 我有以下功能:

public function resultset(){
        $this->execute();
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function single(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

如果我尝试在 while 循环内回显,我无法得到任何输出,只能得到状态码:200。

我尝试了很多其他解决方案,并阅读了许多问题。

【问题讨论】:

  • $result = $database->query("SELECT * FROM workbungee.user"); $users = array(); while ( $row = $result->fetch_array(MYSQLI_ASSOC) ) { $users[] = $row; }
  • 近年来,我几乎不再回答有关 PHP 已弃用的 mysql_ API 的问题。只是说。
  • 你能试试我的答案吗?
  • 没有@Strawberry 说 mysql 已被弃用。

标签: php mysql pdo slim


【解决方案1】:

由于您使用的是 PDO,而不是 mysql,因此您必须使用 PDO 方法。其中之一是为您获取包含所有返回行的数组的专用方法,这使您的查询代码本质上是单行的:

$users = $database->query("SELECT * FROM user")->fetchAll(PDO::FETCH_ASSOC);

另外,不清楚您要返回什么,是一个包含用户的数组还是只是计数?如果是后者,则不应选择记录,而必须要求数据库进行计数。对于这个场合,PDO 再给你一个方法,

$count = $database->query("SELECT count(*) FROM user")->fetchColumn();

【讨论】:

  • 我的代码很乱,完全同意,因为我在搞乱不同的解决方案。抱歉,如果我不清楚,但是是的,我想与用户一起返回数组。但是解决方案给了我一个错误"PHP Fatal error: Call to a member function fetchAll() on null" 我也阅读了 PHP PDO 文档。这是我尝试的第一件事。
  • 如果我使用的是`mysql_fetch_assoc($users)`。它返回状态码 200 但不返回包含已填充用户的数组。
  • 那么,这个 Database 类的东西是什么?
【解决方案2】:

你为什么要使用 mysql_fetch_assoc 。 你需要使用

$database->fetch(PDO::FETCH_ASSOC);

while ($row = $database->fetch(PDO::FETCH_ASSOC)) {
    $users[] = $row; 
    }

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2015-11-26
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多