我收到错误: 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/