【问题标题】:Database query not returning as expected php pdo数据库查询未按预期返回 php pdo
【发布时间】:2015-08-08 13:14:26
【问题描述】:

您好,我正在尝试在 php 中使用 pdo 查询数据库以返回数据库中的所有信息,我正在正确连接到数据库但是当我尝试返回所有数据库信息并打印它时,我得到了这个结果从我的函数返回 >

PDOStatement 对象([queryString] => SELECT * FROM users)

我希望该函数返回整个数据库信息。这是我的代码,非常感谢您的帮助,谢谢。

  public function resetpassword() 
  {

         try
         {
            $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); 
            $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $sql = 'SELECT * FROM users';

            $result = $conn->query($sql);

            return $result;

            $conn = null;
         }
        catch(PDOException $e)
        {
            return 'Database Error';
        }

     }

这是我用来打印该函数结果的代码:

print_r ($usr->resetpassword());

【问题讨论】:

  • 您首先在resetpassword function?中创建您的数据库连接?或者你是在每个函数中创建它吗?此外,您实际上必须获取结果,您无法返回选择查询。
  • 试试return $result->fetchall();而不是return $result;
  • $conn = null; 永远不会被执行。但这无论如何都没有什么区别,因为它无论如何都是一个局部变量......
  • 感谢@Sean 现在似乎返回了整个数据库,当您首先发布时,我会接受您的回答,谢谢。任何机会你都可以解释为什么我这样做的方式没有打印整个数据库。

标签: php mysql pdo


【解决方案1】:

$result 是结果集作为 PDOStatement 对象。如果您使用fetchAll(),它将获取数据作为数据数组。虽然您可以遍历 PDOStatement 对象结果集并提取数据。像这样:

foreach ($conn->query($sql) as $row) {
 echo $row['yourColumnName'];
}

试试这个:

    <?php

    class Database{

    public function resetpassword() 
      {

             try
             {
                $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); 
                $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
                $sql = 'SELECT * FROM users';

                $s = $conn->query($sql);

                return $s->fetchAll(PDO::FETCH_ASSOC);

                $conn = null;
             }
            catch(PDOException $e)
            {
                return 'Database Error';
            }

        }

    }

    $usr=new Database();

    var_dump($usr->resetpassword());

【讨论】:

  • 如果有比Try this: 和代码块更多的细节,答案总是更好。分享为什么这与 OPs 代码不同。我知道你做了什么,但其他人可能看不到。
  • 如上评论所述,删除$conn = null,因为return 语句将停止执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多