php - Windows Server 上的 PDOException

标签 php mysql pdo mysqli

我对 MySQL 和 PHP 还很陌生,所以请耐心等待。经过一番研究后,我发现...令我非常苦恼...显然我的网站托管在 GoDaddy 上的 Windows 服务器(默认情况下)上,而该服务器不支持 PDO。

我最近刚刚通过我发布的另一个问题的建议将所有数据库调用切换为使用准备好的语句。我现在发现这些没有运行,并且出现了一个严重的错误:

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in D:\Hosting\8446415\html\ROOTFOLDER\php\Connect.php:8

Stack trace: #0 D:\Hosting\8446415\html\ROOTFOLDER\php\Connect.php(8): PDO->__construct('mysql:host=HOSTNAME', 'DBNAME', 'PASSWORD') 

#1 D:\Hosting\8446415\html\ROOTFOLDER\admin.php(67): Connect->connect()
#2 {main} thrown in D:\Hosting\8446415\html\ROOTFOLDER\php\Connect.php on line 8

这是 Connect.php:

<?php
    class Connect {
        const expAddress = "HOSTNAME";
        const expUser = "USERNAME";
        const expPwd = "PASSWORD";

        function connect() {
            $db = new PDO('mysql:host='.self::expAddress.';dbname='.self::expUser.';charset=UTF-8', self::expUser, self::expPwd);

            if(!$db) {
                die("<p>Could not establish a connection to the database.</p>");
                include('footer.php');  
            }
            else {
                return $db; 
            }
        }
    }
?>

那么这里的修复是什么?我不知道支持什么,并且被告知要避免所有 mysql_* 语句。

我无法将我的托管帐户升级到 Linux,即使这是最简单的。我需要使用 mysqli_* 语句吗?这个特定的调用将如何改变以使输入免受注入(inject)?

$stmt = $db->prepare("SELECT * FROM logins WHERE username=? AND password=?");
$stmt->execute(array($user, $pass));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

最佳答案

您需要确保已安装pdo_mysql。检查 phpinfo() 中的 pdo_mysql ...如果您知道它已安装,您可能只需要取消注释 php 中的 extension=php_pdo_mysql.dll .ini ...

要捕获创建错误并很好地显示它,您可以如下修改代码:

try{
    $db = new PDO('mysql:host='.self::expAddress.';dbname='.self::expUser.';charset=UTF-8', self::expUser, self::expPwd);
} catch (PDOException $e) {
    die('Connect Failed: ' . $e->getMessage());
}

return $db;

关于php - Windows Server 上的 PDOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474281/

相关文章:

mysql - 具有多个 DISTINCT 的 SQL 语句

PHP 警告 : PHP Startup: Unable to load dynamic library 'pdo_mysql.so'

php - PDO 语句的参数编号无效

javascript - 将 Javascript 变量发送到文件中 PHP 的函数参数中?

php - 使用常量出现错误

php - 无法正确实现加入

php - PHP 中的 if else 与数组

php 文件大小返回统计失败错误

php - 将连接文件包含到类 "Undefined variable conn"

php - PHP 日期中的 SQL 查询