PDO连接:在null上调用成员函数prepare()

时间:2016-08-09 05:00:25

标签: php database class pdo

你好,我有一个问题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()

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您收到错误是因为prepare()PDO的函数,但由于Connect()没有返回任何内容,因此您正在调用prepare()什么都没有。

您必须修改Connect()以便它返回PDO对象。在函数末尾(或Try块的结尾)添加:

return $conn;