php - 从数据库获取数据的函数

标签 php mysql

我想构建一个从数据库获取数据并返回数据的函数,然后我想调用这个函数一段时间。

我执行了这个函数,但是当我调用它一段时间后给我带来了一些问题:

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;
}

有人可以帮忙吗?

最佳答案

您的代码中有两个问题:

  1. getAllUsers()方法仅返回查询的第一条记录,而不是全部;
  2. 即使您修复了此问题,您的 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/

相关文章:

php - 无法从命令行访问 phpmyadmin

mySQL 索引参数和限制

php - MySQL 查询由于标点符号不匹配

PHP header 重定向循环

php - 理解为什么 echo 在 php 类函数中不起作用

mysql - MySQL 数据透视表中的分组依据

php - 获取 X 组中 N 项的所有可能组合

php - 检查给定日期是否已过

c# - 需要修改参数的参数化查询mySQL

php - ZF2 已经激活的查询阻止执行