网站的PHP文件显示错误:找不到驱动程序
我正在为我的投资组合网站创建一个博客,我正在从头开始开发它。我已经连接了我的数据库,连接在那里,但它说找不到驱动程序 我已经阅读了几个小时所有其他的帖子,没有一个答案解决了我的问题。我已经下载了实际的文件,说它们是驱动程序,我已经从php.ini文件中去掉了分号,我一遍又一遍地修改我的代码以检查拼写错误,我已经检查以确保所有驱动程序都已加载并在我的PHPinfo页面上工作 我觉得我忘记了帮助回答这个问题的一条关键信息,但什么都没想到。如果我想到其他事情,我会更新的。提前谢谢你网站的PHP文件显示错误:找不到驱动程序,php,sql,pdo,driver,Php,Sql,Pdo,Driver,我正在为我的投资组合网站创建一个博客,我正在从头开始开发它。我已经连接了我的数据库,连接在那里,但它说找不到驱动程序 我已经阅读了几个小时所有其他的帖子,没有一个答案解决了我的问题。我已经下载了实际的文件,说它们是驱动程序,我已经从php.ini文件中去掉了分号,我一遍又一遍地修改我的代码以检查拼写错误,我已经检查以确保所有驱动程序都已加载并在我的PHPinfo页面上工作 我觉得我忘记了帮助回答这个问题的一条关键信息,但什么都没想到。如果我想到其他事情,我会更新的。提前谢谢你 <?php
<?php
ob_start();
session_start();
//database credentials
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "portfolio_blog.sql";
global $db;
function testdb_connect ($hostname, $username, $password){
$db = new PDO('mysqli:host=$hostname;$dbname', $username, $password);
return $db;
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
try {
$db = testdb_connect ($hostname, $username, $password);
echo 'Connected to database';
}
catch(PDOException $e) {
echo $e->getMessage();
}
您遇到了一些问题:
司机问题
驱动程序名为mysql
,您已经输入了mysqli
mysqli
是PHP的一个扩展,它取代了旧的、过时的mysql
扩展。不幸的是,这两者都与PDO无关
您正在寻找的驱动程序是mysql
。第一个更改是更改mysqli:host=$hostname$dbname'
到'mysql:host=$hostname$dbname'
'
与'
$hostname
和$dbname
的值。如果您想使用这些变量,则需要对PHP使用双引号来执行替换。使用单引号通常会将$hostname
和$dbname
放入参数中
第二个变化来自mysql:host=$hostname$dbname'到“mysql:host=$hostname;$dbname”
$dbname
未定义function testdb_connect ($hostname, $username, $password, $dbname){
$db = new PDO("mysql:host=$hostname;$dbname", $username, $password);
return $db;
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
$dbname
是“portfolio\u blog.sql”
表示您正在尝试加载.sql
文件。您需要提供数据库的名称。我不知道那是什么,所以你可能需要把它放在你自己身上
我想您需要更改DSN才能再次处理此问题
例如,假设数据库名称为portfolio\u blog
:
$dbname=“portfolio\u blog”
及
“mysql:host=$hostname;dbname=$dbname”
我建议这样做:
<?php
ob_start();
session_start();
//database credentials
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "portfolio_blog";
global $db;
function testdb_connect ($hostname, $username, $password, $dbname){
$db = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db;
}
try {
$db = testdb_connect ($hostname, $username, $password, $dbname);
echo 'Connected to database';
}
catch(PDOException $e) {
echo $e->getMessage();
}
我没有足够的信心将此作为答案发布,但是:如果您在dsn中将mysqli
更改为mysql
,会发生什么?('mysql:host=$hostname;$dbname'
)此外,如果您复制/粘贴从PHP获得的确切错误,这将非常有帮助。实际上,它所说的只是在一个巨大的白色屏幕上“找不到驱动程序”。我会试试你的建议。我做了更改,只是去掉了'I',这是它抛出的错误:“SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败:没有这样的主机是已知的。”应该是新的PDO(“mysqli:host=$hostname;dbname=$dbname”、$username,$password)代码>?您需要使用双引号,以便PHP能够验证stringGood aim中的变量,但您也有一些问题:返回$db;在$db->setAttribute之前。全局$db在全局范围内没有意义。echo$e->getMessage();不是。我感谢你的时间!!!我发现了这个错误,但天知道我还有很多问题要解决。谢谢你帮助我!