我在使用 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
有一个 reference &
,所以当$users
Array 被填满时。每次执行 while 循环时,先前插入的记录将更新为&$result
变量中的最后一个值。因此,总体结果$users
将包含每条记录的所有相同数据的列表。
那么如何从&$result
变量中删除引用呢?
它通过将每一列自己放在一个新数组中来工作:
while($statement->fetch()) {
$users[$result['id']] = array($result['id'], $result['email'], ..etc);
}
但我想这太多了,必须有一个更简单的解决方案。