我收到此错误,想知道如何修复它? 这是我试图将我的文章添加到Feed中的时候。
class Article {
public function fetch_all() {
global $pdo;
$query = $pdo->prepare("SELECT * FROM articles ORDER BY `article_id` DESC");
$query->execute();
return $query->fetchAll();
}
public function fetch_data($article_id) {
global $pdo;
$query = $pdo->prepare("SELECT * FROM articles WHERE article_id = ?");
$query->bindValue(1, $article_id);
$query->execute();
return $query->fetch();
}
}
?>
答案 0 :(得分:0)
$pdo
未定义。你需要先创建它。
答案 1 :(得分:0)
不要使用global
次尝试。这不是OOP设计,也是您的代码失败的原因之一。相反,确定目前已创建$pdo
,然后将其传递给Article
的构造函数。
进一步注意所谓typehints
的能力。使用它们时,您可以为方法参数强制执行特殊类型。如果在运行时传递另一个值(如NULL或其他),PHP将抛出错误:
typehint-----------------|
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
示例:
class Article {
protected $pdo;
// the type hint this makes !!SURE!! PDO is connected
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
public function fetch_all() {
$query = $this->pdo->prepare("SELECT * FROM articles ORDER BY `article_id` DESC");
$query->execute();
return $query->fetchAll();
}
public function fetch_data($article_id) {
// note this:
$query = $this->pdo->prepare("SELECT * FROM articles WHERE article_id = ?");
$query->bindValue(1, $article_id);
$query->execute();
return $query->fetch();
}
}
这样称呼:
$pdo = new PDO($connectionString, $user, $pass);
$article = new Article($pdo);
var_dump($article->fetch_data($someId));