查询returns个空数组
Query returns empty array
我正在尝试从我的数据库中查询一些数据。我正在尝试做 GET
并将它们放入数组以将其输出为 JSON
。但是它 return 空数组。我的问题是为什么我的数据库包含信息并且我知道我的连接等是正确的因为我开始工作 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));
});
这就是它 returns:
{
"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。
我尝试了很多其他解决方案并阅读了很多问题。
你为什么使用
mysql_fetch_assoc
。
你需要使用
$database->fetch(PDO::FETCH_ASSOC);
while ($row = $database->fetch(PDO::FETCH_ASSOC)) {
$users[] = $row;
}
由于您使用的是 PDO,而不是 mysql,因此您必须使用 PDO 方法。其中之一是为您提供包含所有 returned 行的数组的专用方法,这使您的查询代码本质上是 one-liner:
$users = $database->query("SELECT * FROM user")->fetchAll(PDO::FETCH_ASSOC);
另外,不清楚你想要什么return,一个包含用户的数组还是只是计数?如果是后者,您不应该 select 记录,而必须要求数据库进行计数。对于这个场合,PDO 又为您提供了一个方法,
$count = $database->query("SELECT count(*) FROM user")->fetchColumn();
我正在尝试从我的数据库中查询一些数据。我正在尝试做 GET
并将它们放入数组以将其输出为 JSON
。但是它 return 空数组。我的问题是为什么我的数据库包含信息并且我知道我的连接等是正确的因为我开始工作 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));
});
这就是它 returns:
{
"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。
我尝试了很多其他解决方案并阅读了很多问题。
你为什么使用
mysql_fetch_assoc
。
你需要使用
$database->fetch(PDO::FETCH_ASSOC);
while ($row = $database->fetch(PDO::FETCH_ASSOC)) {
$users[] = $row;
}
由于您使用的是 PDO,而不是 mysql,因此您必须使用 PDO 方法。其中之一是为您提供包含所有 returned 行的数组的专用方法,这使您的查询代码本质上是 one-liner:
$users = $database->query("SELECT * FROM user")->fetchAll(PDO::FETCH_ASSOC);
另外,不清楚你想要什么return,一个包含用户的数组还是只是计数?如果是后者,您不应该 select 记录,而必须要求数据库进行计数。对于这个场合,PDO 又为您提供了一个方法,
$count = $database->query("SELECT count(*) FROM user")->fetchColumn();