php - PDO连接类

标签 php mysql pdo

因此,我尝试构建一个简单的 PDO 连接类,以便每当我需要访问数据库时都可以创建一个数据库对象,但无论我尝试什么,我都会遇到相同的错误。

这是我的 DB 类代码

<?php
class DbConnect
{
// Database login vars
private $dbHostname = 'localhost';
private $dbDatabase = 'database';
private $dbUsername = 'username';
private $dbPassword = 'password';
public $db = null;

public function connect()
{
    try
    {
        $db = new PDO("mysql:host=".$this->dbHostname.";dbname=".$this->dbDatabase, $this->dbUsername, $this->dbPassword); // Establish DB connection
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error handling
        return $db;
    }
    catch(PDOException $e)
    {
        echo "It seems there was an error.  Please refresh your browser and try again. ".$e->getMessage();
    }
}
}
?>

这是我尝试在其中使用它的类的代码:

<?php
session_start();
require 'DbConnect.php';

class User
{
    public function bindParams()
    {
        $DbConnect = new DbConnect();
        $sql = $DbConnect->connect();

        $sql->prepare("insert into dbobjectex(firstName, lastName) values (:firstName, :lastName)");
        $sql->bindParam(':firstName', $_SESSION['firstName']);
        $sql->bindParam(':lastName', $_SESSION['lastName']);
        $sql->execute();
    }
}
?>

然后从我创建 User 类的位置调用 bindParams() 。我不断收到的两个错误是“NetworkError: 500 Internal Server Error”和“HTML 文档的字符编码未声明”。关于我在这里做错了什么有什么想法吗?感谢您的任何建议。

最佳答案

我在这里做错了什么? - 很多事情,但最明显要错过的是:在 DbConnect 类定义的末尾,你'重新关闭 php 标签 ?>,您必须在包含的文件中尽可能避免 with included files 。在您的情况下使用它们的结果是过早发送 header ,这解释了您的第二个错误。

除此之外,每次实例化用户类时,都会创建一个新的 PDO 实例:将其分配给 connect 成员函数的本地变量,至少替换$db$this->db。但最重要的是,我同意@sabre:为什么 PDO 需要额外的包装器?特别是只执行实例化并返回 pdo 实例的操作,只需创建一个抽象类来在需要时处理连接。

您可能想要检查的另一件事是天气或包含路径是否正确,并且 read the docs on autoloading classes 。一旦您拥有了丰富的类库,它将为您省去很多麻烦。这可能可以解释您的第一个错误,?> 标记也可以解释,但为了安全起见:使用 require_once,而不是 require :再次包含并重新定义一个类根本不是您想要做的事情。

关于php - PDO连接类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11931219/

相关文章:

php - 如何在 Laravel 中静态使用布局?

PHP $_SESSION 变量导致 mySQL 出错

php - Symfony 2.5 - 我无法捕获 PDOException

php - 如何计算php中包括空格和正则表达式在内的所有字符?

python 逐一迭代mysql字段的行

php - 如何使用 PHP 将查询放入 MySQL 中?

php - 如何在 openshift 应用程序中连接到数据库

javascript - PHP 中的分块数组为 3(在 JS 中可以解决)

php - Flex - 增加 PHP 服务函数调用的超时

php - 判断数据库字段是否为 TEXT 类型