由于我不断收到此错误消息“找不到驱动程序”,因此我无法使用“ new PDO()”。我正在使用hostgator,并且与他们进行了广泛合作,但无济于事。
我已经更新了我的PHP版本7.0.25,检查默认的php.ini设置(HostGator的使用为所有客户千篇一律的默认php.ini文件...除非你创建自己的自定义的php.ini文件,在这种情况下,自定义版本将被覆盖)。我查看了我的phpinfo()结果,一切看起来都很好(除非我遗漏了一些东西)。我已经包含了我的脚本和php.ini文件设置以及phpinfo()结果的摘要。
PHP.ini文件设置:
[Pdo] ;是否合并ODBC连接。可以是“严”,“放松”或“关闭”一个 ; http://php.net/pdo-odbc.connection-pooling ; pdo_odbc.connection_pooling = strict
; 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版本是NON THREAD SAFETY版本... hostgator使用APACHE服务器,并且我了解到只有THREAD SAFE版本才可以与APACHE服务器一起使用。这可能是问题,但不是100%可以肯定。任何意见/建议将不胜感激!
答案 0 :(得分:1)
基本语法错误:
// $dsn = 'msql:host=' . $host . ';dbname=' . $dbName;<br>
$dsn = 'mysql:host=' . $host . ';dbname=' . $dbName;<br>
({msql
而非mysql
)。