我想构建一个从数据库获取数据并返回数据的函数,然后我想调用这个函数一段时间。
我执行了这个函数,但是当我调用它一段时间后给我带来了一些问题:
public function getAllUsers() {
// if database connection opened
if ($this->databaseConnection()) {
// database query, getting all the info of the selected user
$query = $this->db_connection->prepare('SELECT * FROM users');
$query->execute();
// get result row (as an object)
return $query->fetchObject();
} else {
return false;
}
}
这是我想要调用该函数的方式:
while($row = $users->getAllUsers()) {
echo "User name: ".$row->user_name."<br>User ID: ".$row->user_id;
}
有人可以帮忙吗?
最佳答案
您的代码中有两个问题:
getAllUsers()
方法仅返回查询的第一条记录,而不是全部;- 即使您修复了此问题,您的
while
循环(如另一个答案中所述)也永远不会结束,因为会无限检索结果。
要修复它,您必须按以下方式更改代码:
public function getAllUsers() {
(...)
// get all rows (as an object)
return $query->fetchAll( PDO::FETCH_OBJ );
(...)
}
然后执行 foreach
循环而不是 while
循环:
foreach( $users->getAllUsers() as $row ) {
(...)
}
替代方案:您可以返回 $query
对象并从方法中获取它:
public function getAllUsers() {
(...)
// return the query:
return $query;
(...)
}
$rows = $users->getAllUsers();
while( $row = $rows->fetchObject() ) {
echo "User name: ".$row->user_name."<br>User ID: ".$row->user_id;
}
第一个解决方案更加一致和漂亮,第二个解决方案可以在查询返回的非常大量行上表现更好
关于php - 从数据库获取数据的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157204/