这真的是我现在的错误,所有q& a我读过的都不解决我的问题。我已经在php手册中读到,从PHP 5.1.0开始默认启用PDO"驱动程序。"我有php 5.5.18。
php_info()显示:
PDO Driver for MySQL enabled
我正在使用fedora,并且:
yum install php-pdo
GIVS:
php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version
一些代码
$dsn = '
mysql:host=' . MY_HOST . '
;dbname=' . MY_DB . '
;charset=utf8;"';
$user = MY_USER;
$password = MY_PASS;
try {
$this->_dbh = new PDO($dsn, $user, $password);
$this->_dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
这让我感激不尽:
Connection failed: could not find driver
答案 0 :(得分:0)
你重启了网络服务器吗?
发出
时yum install php-pdo
它给出了
php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version
这很好,花花公子,但你需要发出:
sudo service httpd stop / start或restart或sudo /etc/init.d/httpd stop / start restart
将扩展程序加载到apache webserver,否则无论你做什么,它都无法工作。驱动程序已启用但您需要重新启动Web服务器才能加载扩展程序!
答案 1 :(得分:0)
我的DSN字符串中有换行符,我认为这就是问题所在。
我已将其更改为:
$host = MY_HOST;
$db = MY_DB;
$user = MY_USER;
$password = MY_PASS;
try {
$this->_dbh = new PDO(
"mysql:host=$host;dbname=$db;charset=utf8;",
$user,
$password
);
} catch (PDOException $e) {
printf(
'Connection failed: %s<br>',
$e->getMessage()
);
}