【发布时间】:2016-12-26 23:09:21
【问题描述】:
我正在观看视频并仔细检查所有代码,一切似乎都一样,但我收到了这些错误。
错误:
注意:未定义变量:QueryBuilder.php 第 14 行中的 pdo
致命错误:在第 14 行的 QueryBuilder.php 中调用一个成员函数 prepare() on null
QueryBuilder.php:
class QueryBuilder
{
protected $pdo;
public function __construct($pdo)
{
$this->pdo = $pdo;
}
public function selectAll($table)
{
$query = $pdo->prepare("SELECT * FROM `$table`"); // --> LINE 14 <--
$query->execute();
return $query->fetchAll();
}
}
Connection.php:
class Connection
{
public static function make()
{
$servername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "test";
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbName", $dbUsername, $dbPassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $pdo;
}
catch(PDOException $e){
die($e->getMessage());
}
}
}
init.php:
require "database/Connection.php";
require "database/QueryBuilder.php";
require "app/Product.php";
$query = new QueryBuilder(Connection::make());
【问题讨论】:
-
$table需要定义;这是一个变量。 -
@Fred-ii- 我在 index.php 中做,类似于 -
$products = $query->selectAll("products"); -
试试
$query = $this->pdo->prepare -
@Fred-ii-
$query = $this->pdo->prepare工作。如果需要,您可以将其发布为答案。谢谢。 -
不客气,已经完成了。