MySQLiの使用に問題があります。データベース内のすべてのユーザーを配列として返す関数を作成したいと思います。
ここにコードがあります:
public function getAll() {
$statement = $this->database->prepare('SELECT `id`, `email`, `firstname`, `lastname`, `last_time`, `type`, `activated`, `enabled` FROM `users` ORDER BY `id`');
$statement->execute();
$statement->bind_result($result['id'], $result['email'], $result['firstname'], $result['lastname'], $result['last_time'], $result['type'], $result['activated'], $result['enabled']);
$users = array();
while($statement->fetch()) {
$users[$result['id']] = $result;
}
return $users;
}
問題は&$result
、に参照&
があるため、$users
配列がいっぱいになるとです。whileループが実行されるたびに、前に挿入されたレコードが&$result
変数の最後の値に更新されます。したがって、全体的な結果$users
には、各レコードのすべての同じデータのリストが含まれます。
&$result
では、どうすれば変数から参照を削除できますか?
これは、各列を独自の新しい配列に配置することで機能します。
while($statement->fetch()) {
$users[$result['id']] = array($result['id'], $result['email'], ..etc);
}
しかし、それは多すぎると思います。もっと簡単な解決策が必要です。