【问题标题】:"could not find driver" error for "new PDO()" command, PHP 7.0.25“new PDO()”命令的“找不到驱动程序”错误,PHP 7.0.25
【发布时间】:2019-06-27 04:45:41
【问题描述】:

我无法使用“new PDO()”,因为我不断收到此错误消息“找不到驱动程序”。我正在使用 hostgator,并与他们进行了广泛的合作,但无济于事。

我已将我的 PHP 版本更新到 7.0.25,检查了默认的 php.ini 设置(hostgator 对其所有客户使用千篇一律的默认 php.ini 文件...除非您创建自己的自定义 php.ini文件,在这种情况下自定义版本会覆盖)。我查看了我的 phpinfo() 结果,一切看起来都很好(除非我遗漏了什么)。我已经包含了我的脚本和我的 php.ini 文件设置和 phpinfo() 结果的 sn-ps。

PHP.ini 文件设置:

[Pdo] ;是否池化 ODBC 连接。可以是“严格”、“宽松”或“关闭”之一 ; http://php.net/pdo-odbc.connection-pooling ;pdo_odbc.connection_pooling=严格

;pdo_odbc.db2_instance_name

[pdo_mysql] ;如果使用 mysqlnd:内部结果集缓存的缓存槽数 ; http://php.net/pdo_mysql.cache_size pdo_mysql.cache_size = 2000

;本地 MySQL 连接的默认套接字名称。如果为空,则使用内置 ; MySQL 默认值。 ; http://php.net/pdo_mysql.default-socket pdo_mysql.default_socket=

phpinfo() 结果:

PDO 驱动程序:mysql、sqlite

客户端 API 版本:5.6.41-84.1

指令:pdo_mysql.default_socket

本地值:/var/lib/mysql/mysql.sock

主值:/var/lib/mysql/mysql.sock

<?php

$host = "localhost";
$user = "ABC";
$pw = "123";
$dbName = "XYZ";
$dsn = 'msql:host=' . $host . ';dbname=' . $dbName;
$pdo = new PDO($dsn,$user,$pw); // this is the line that the error refers to

$eml = $_POST['data'];
$newPassword = $_POST['data1'];
$cnewPassword = $_POST['data2'];
$query = $pdo->query("SELECT * FROM accounts WHERE email = $eml") or die(mysql_error());
$row = $query->fetch(PDO::FETCH_ASSOC);


            if($row > 0) {
                echo "GOOD";
            } else {
                echo "BAD";
            }; 

?>

我应该得到一个回显“GOOD”,但我得到的只是“找不到驱动程序”错误。需要注意的一件重要事情;我确实注意到 hostgator 用来升级的 PHP 版本是非线程安全版本... hostgator 使用 APACHE 服务器,我了解到只有 THREAD SAFE 版本才能与 APACHE 服务器一起使用。这可能是问题所在,但不能 100% 确定。任何意见/建议将不胜感激!

【问题讨论】:

  • 有没有mysqli驱动也可以用?
  • 您是否注意到您在 dsn 中选择了“msql”而不是“mysql”?我认为这个问题只是一个印刷错误。
  • 你真的有mSql数据库,而不是MySQL数据库吗?
  • 哇...是的,我的错字,修复了 dsn 命令。但是,我仍然收到一个错误,这次是“致命错误,未捕获的 PDO 异常,用户访问被拒绝......”。我的密码是准确的,我已经用 hostgator 仔细检查过。对这个问题有什么想法吗?谢谢大家的意见。

标签: php mysql pdo


【解决方案1】:

基本语法错误:

// $dsn = 'msql:host=' . $host . ';dbname=' . $dbName;<br>
   $dsn = 'mysql:host=' . $host . ';dbname=' . $dbName;<br>

msql 而不是mysql)。

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2020-09-23
    • 2019-10-17
    • 2012-07-10
    相关资源
    最近更新 更多