0

我收到此错误,想知道如何解决?当我试图将我的文章添加到提要时。

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();
    }
}

    ?>
4

2 回答 2

0

$pdo在您调用它时未定义。您需要先创建它。

于 2013-05-04T09:58:59.043 回答
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));
于 2013-05-04T09:59:00.043 回答