我正在尝试查询数据库中的一些数据。我正在尝试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。
我已经尝试了很多其他解决方案并阅读了十几个问题。
答案 0 :(得分:1)
你为什么要使用
mysql_fetch_assoc
。
你需要使用
$database->fetch(PDO::FETCH_ASSOC);
while ($row = $database->fetch(PDO::FETCH_ASSOC)) {
$users[] = $row;
}
答案 1 :(得分:1)
当您使用PDO而不是mysql时,您必须使用PDO方法。其中一个是获取包含所有返回行的数组的专用方法,这使得您的查询代码基本上是一行的:
$users = $database->query("SELECT * FROM user")->fetchAll(PDO::FETCH_ASSOC);
另外,目前还不清楚你想要返回什么,一个有用户的数组还是只有计数?如果是后者,则不应选择记录,但必须要求数据库进行计数。对于这个场合,PDO再次为您提供了一种方法,
$count = $database->query("SELECT count(*) FROM user")->fetchColumn();