为了账号安全,请及时绑定邮箱和手机立即绑定

未捕获的错误:在 [关闭] 中调用未定义的函数 bindValue()

未捕获的错误:在 [关闭] 中调用未定义的函数 bindValue()

PHP
缥缈止盈 2021-06-03 10:31:43
我正在尝试从数据库中获取数据,但出现此错误致命错误:未捕获错误:调用 C:\xampp\htdocs\includes\article.php:17 中未定义的函数 bindValue() 堆栈跟踪:#0 C:\xampp\htdocs\article.php(11):文章-> fetch_data('0') #1 {main} 在 C:\xampp\htdocs\includes\article.php 第 17 行抛出C:\xampp\htdocs\includes\article.php<?phpclass Article {    public  function fetch_all(){        global $pdo;        $query = $pdo->prepare("SELECT * FROM articles");        $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();    } }?>C:\xampp\htdocs\article.php<?phpinclude_once('includes/connection.php');include_once('includes/article.php');$article = new Article;if (isset($_GET['id'])){    $id = $_GET['id'];    $data = $article->fetch_data($id);    print_r($data);} else {    header('Location: index.php');    exit();}?>
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

bindValue()是 PDOStatement 对象的一个方法,由 prepare 调用返回。你想要这样的东西:


$query = $pdo->prepare('SELECT * FROM articles WHERE article_id = ?');

$query->bindValue(1, $article_id);

$query->execute();

您还可以使用命名参数:


$query = $pdo->prepare('SELECT * FROM articles WHERE article_id = :article_id');

$query->bindValue('article_id', $article_id);

$query->execute();

另外,不要依赖全局变量,它打破了面向对象编程的基本概念。相反,将 PDO 连接对象作为参数传递给 Article 对象。这称为依赖注入。


class Article

{

    protected $pdo;

    public function __construct($pdo) {

        $this->pdo = $pdo;

    }

    public function fetch_all() {

        $query = $this->pdo->prepare("SELECT * FROM articles");

        $query->execute();

        return $query->fetchAll();

    }

}

然后$pdo在实例化文章时作为参数传递:


$article = new Article($pdo);


查看完整回答
反对 回复 2021-06-13
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信