你好,我有一个问题PDO连接。我的conn.php是
<?php
define('host', 'localhost');
define('host_user', 'root');
define('host_pass', '');
define('host_db', 'testdb');
class Database {
public $conn;
public function Connect() {
try {
$conn = new PDO("mysql:host=" . host . ";dbname=" . host_db, host_user, host_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection error:" . $e->getMessage();
}
}
}
?>
当我使用这个
时$dbClass = new Database();
$stmt = $dbClass::Connect()->prepare("SELECT * FROM user_posts");
它返回错误:
在null
上调用成员函数prepare()
为什么会这样?
答案 0 :(得分:1)
您收到错误是因为prepare()
是PDO
的函数,但由于Connect()
没有返回任何内容,因此您正在调用prepare()
什么都没有。
您必须修改Connect()
以便它返回PDO对象。在函数末尾(或Try
块的结尾)添加:
return $conn;