【发布时间】:2013-05-11 22:02:02
【问题描述】:
我创建了一个 Mysql 连接数组并将其传递给连接方法:
$database->connect(array(ROOT_DB_HOST,
ROOT_DB_NAME, ROOT_DB_USERNAME, ROOT_DB_PASSWORD));
当我 print_r() 连接方法中的数组时,我得到了我所期望的:
Array
(
[0] => localhost
[1] => dbname
[2] => dbuser
[3] => dbpass
)
但是,在 connect 方法中,我将数组值传递给 DSN 字符串,我收到了 0、1、2、3 上的未定义偏移量。这是 DSN 字符串:
$this->dbh = new PDO('mysql:host='. $connection[0] .';dbname=' . $connection[1], $connection[2], $connection[3]);
所以我将值作为数组传递并将它们插入 PDO 构造函数并接收错误,我不知道发生了什么,有什么想法吗?
方法:
public function connect($connection) {
try {
$this->dbh = new PDO('mysql:host='. $connection[0] .';dbname=' . $connection[1], $connection[2], $connection[3]);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $e) {
throw new Exception($e->getMessage());
}
}
错误:
注意:未定义的偏移量:第 16 行的 database.class.php 中的 0 注意: 未定义的偏移量:第 16 行的 database.class.php 中的 1 注意: 未定义的偏移量:第 16 行的 database.class.php 中的 2 注意:未定义 偏移量:第 16 行 database.class.php 中的 3
致命错误:未捕获 带有消息“SQLSTATE [28000] [1045] 访问的异常“异常” 拒绝用户'apache'@'localhost'(使用密码:NO)' database.class.php:20 堆栈跟踪:#0 sandboxx.php(16): Database->connect(Array) #1 {main} 在 database.class.php 中抛出 第 200 行
【问题讨论】:
-
发布您收到的确切错误消息。
-
能否把“connect()”方法的代码也发一下?
-
当您使用 var_dump 数组和 var_dump $connection 时会得到什么?
-
读取异常消息堆栈跟踪。就是说连接数据库不成功。因此返回的结果集是空的。因此错误。我的 2cc。
-
发布构建数组的实际代码并调用
connect(),如果您在顶部拥有的不是确切的实际代码...