我创建了一个MySQL连接阵列,并把它传递给一个连接方法,例如:未定义的阵列偏移,但偏移存在
$database->connect(array(ROOT_DB_HOST,
ROOT_DB_NAME, ROOT_DB_USERNAME, ROOT_DB_PASSWORD));
当我print_r()
connect方法我进去的阵列我的期望:
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());
}
}
错误:
Notice: Undefined offset: 0 in database.class.php on line 16 Notice: Undefined offset: 1 in database.class.php on line 16 Notice: Undefined offset: 2 in database.class.php on line 16 Notice: Undefined offset: 3 in database.class.php on line 16
Fatal error: Uncaught exception 'Exception' with message 'SQLSTATE[28000] [1045] Access denied for user 'apache'@'localhost' (using password: NO)' in database.class.php:20 Stack trace: #0 sandboxx.php(16): Database->connect(Array) #1 {main} thrown in database.class.php on line 200
发布您得到的**确切**错误消息。 – Jocelyn 2013-05-11 22:10:04
你也可以发布“connect()”方法的代码吗? – Niko 2013-05-11 22:10:57
当你使用var_dump数组和var_dump $连接时,你会得到什么? – 2013-05-11 22:44:48