php - PDO 和类出现 'PDOException' 错误

标签 php mysql pdo

我收到错误: fatal error :未捕获异常“PDOException”,消息为“SQLSTATE[HY000] [2002] 无法通过套接字“/var/lib/mysql/mysql.conf”连接到本地 MySQL 服务器。/home/content/........ 中的 sock'(2)'

尽管如果我在一个文件中执行此操作,效果很好!

我的 php 文件:

<?php
require 'includes/dbc.php';

$dbc = new dbc();
$db = $dbc->openDb();
$stmt = $dbc->getAllUsers($db);

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['iduser'];
}
?>

我的数据库类:

<?php

class dbc {

    public $dbserver = '';
    public $dbusername = '';
    public $dbpassword = '';
    public $dbname = '';

    function openDb() {

        $db = new PDO('mysql:host=' . $dbserver . ';dbname=' . $dbname . ';charset=utf8', '' . $dbusername . '', '' . $dbpassword . '');
        return $db;
    }

    function getAllUsers($db) {
        $stmt = $db->query("SELECT * FROM user");
        return $stmt;
    }
}

?>

最佳答案

在您提供的示例代码中,您没有为数据库连接字符串指定数据库、用户、密码或主机:

function openDb() {
    $db = new PDO('mysql:host=' . $dbserver . ';dbname=' . $dbname . ';charset=utf8', '' . $dbusername . '', '' . $dbpassword . '');
    return $db;
}

如果数据无效,您的代码将无法连接,因此您会收到连接错误。

由于它们对于 dbc 类是全局的,因此在访问它们时需要使用 $this(例如 $this->dbserver)。尝试将您的代码更新为:

function openDb() {
    $db = new PDO('mysql:host=' . $this->dbserver . ';dbname=' . $this->dbname . ';charset=utf8', '' . $this->dbusername . '', '' . $this->dbpassword . '');
    return $db;
}

* 此外,尽管您可能已将其删除以发布问题,但您也没有将任何这些变量设置为实际值。

关于php - PDO 和类出现 'PDOException' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13211983/

相关文章:

php - Warning : fread() [function. fread]: Length参数必须大于0

php - 内存不足,Mysql_query() 无法保存结果集

php - 在回显之前编辑字符串中的 url?

mysql - 将电子邮件存储为三个属性与一个属性(用于统计目的)

php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined'

mysql - 如果值为 no,则选择其他

php - 在 php 中使用 $_request 变量更新数据库

php - Laravel 属于抛出 undefined 错误

php - 我如何进行 ajax 实时搜索,减少现有列表而不是提取新结果?

php - Web 主机可以停止 pdo->prepare() 运行吗?