我想检索数据库中的所有用户并将它们放入具有两个元素的数组中;一个包含包含所有用户 ID 的数组,另一个包含包含所有用户名的数组。但是,下面的代码不能用于此目的。它的作用是将数据库中的第一个用户放入$field1(第一个用户的用户ID)和$field2(第一个用户的用户名)中。
我需要有关如何解决此问题的帮助。
基本上,我想要实现以下目标:
$userIds = array(1, 2, 3, 4, 5); // The id's from all users in an array
$userNames = array("Nisse", "Kalle", "Svenne", "Jonna", "Linda"); // The usernames of all the users in an array
// The arrays with user id's and usernames should be put in a new array that's returned from the function.
$users = array(
[0] => $userIds,
[1] => $userNames
);
来自 UserHandler.php:
class UserHandler {
private $m_db = null;
public function __construct(Database $db) {
$this->m_db = $db;
}
public function GetAllUsers() {
$userArray = array();
$query = 'SELECT * FROM Users';
$stmt = $this->m_db->Prepare($query);
$userArray = $this->m_db->GetUsers($stmt);
return $userArray;
}
}
来自Database.php:
public function GetUsers(\mysqli_stmt $stmt) {
$userArray = array();
if ($stmt === FALSE) {
throw new \Exception($this->mysqli->error);
}
//execute the statement
if ($stmt->execute() == FALSE) {
throw new \Exception($this->mysqli->error);
}
$ret = 0;
if ($stmt->bind_result($field1, $field2, $field3) == FALSE) {
throw new \Exception($this->mysqli->error);
}
$stmt->fetch();
$stmt->Close();
echo $field1 // "1"; <- userid of the first user in db table
echo $field2 // "Kalle" <- username of the first user in the db table
$userArray[] = $field1; // An array with all the user id's
$userArray[] = $field2; // An array with all the usernames
return $userArray;
}
数据库表如下所示: 用户 ID |用户名 |密码
最佳答案
仅当您仅从结果表中获取第一行时才执行$stmt->fetch()
,因此您需要对结果表进行循环:
public function GetUsers(\mysqli_stmt $stmt) {
$userArray = array(
0 => array(),
1 => array()
);
// the rest of code is the same here
// replace the line $stmt->fetch() with this block
while ($stmt->fetch()) {
array_push($userArray[0], $field1);
array_push($userArray[1], $field2);
}
// remove these lines
/*
$userArray[] = $field1;
$userArray[] = $field2;
*/
return $userArray
}
关于php - 检索所有用户(userId 和用户名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764637/