【问题标题】:Using PDO connection within a php class在 php 类中使用 PDO 连接
【发布时间】:2012-05-30 11:39:58
【问题描述】:

我正在努力获得一些我认为应该很容易工作的东西。我创建了一个使用 PDO 连接到数据库的类,并希望最初只创建一个函数来将直接 SQL 查询传递给它。

class PDO_MySQL
{
    private $_db;
    private $connection_string;

    public function __construct()
    {
        $this->_db = new PDO($this->connection_string, DB_USERNAME, DB_PASSWORD);
    }
    public function DB_Query($sql)
    {
        $query = $this->_db->query($sql);
        return $query;
    }
}

然后在我的代码中:

$db = new PDO_MySQL();
$people = $db->DB_Query("SELECT * FROM about_us");
print_r($people);

但这又回来了

PDOStatement Object ( [queryString] => SELECT * FROM about_us )

当我正在寻找它以返回结果集时。

连接字符串已设置,连接正常我刚刚删除了这篇文章的多余代码。

第二个问题,这是最好的方法吗?我正在从 MySQLi 和非基于类的脚本迁移。

【问题讨论】:

  • Here 一切都得到了很好的解释。
  • 或查看本教程:phpro.org/tutorials/Introduction-to-PHP-PDO.html .. 我认为您在这里缺少的是 fetchAll
  • 谢谢,fetchAll 已经成功了。不使用 PDO FETCH_INTO 或 FETCH_CLASS 是否有与 mysqli fetch_object() 等效的方法?
  • @PLB 文档显示可以添加此行以作为对象返回 $query->setFetchMode(PDO::FETCH_OBJ);在 fetch() 或 fetchAll() 之前
  • @MattP 是的,你可以这样做,但我不使用。

标签: php pdo


【解决方案1】:

代替

public function DB_Query($sql)
{
    $query = $this->_db->query($sql);
    return $query;
}

你必须做的:

public function DB_Query($sql)
{
    $query = $this->_db->prepare($sql);
    $query->execute();
    return $query->fetchAll();
}

因为

PDO::query — 执行 SQL 语句,将结果集作为 PDOStatement 对象返回

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2013-07-19
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2014-02-02
    相关资源
    最近更新 更多