gpt4 book ai didi

php - PDO 和类给出 fatal error : Call to a member function query()

转载 作者:行者123 更新时间:2023-11-29 08:38:53 25 4
gpt4 key购买 nike

我在使用下面的代码获取数据库查询时遇到一些问题。我是第一次使用类甚至 PDO 进行连接,所以不知道出了什么问题。据你所知,我不是那么高手,但正在努力学习类(class),所以如果你能告诉我是否有什么可以改进的,我将不胜感激。

错误消息: fatal error :在第 72 行对 C:\pat\to\class.php 中的非对象调用成员函数 query()

<?php

// get database connection
private static function _db_connect() {

try {

$db_con = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_pass);
$db_con = null;

} catch (PDOException $e) {

print "Error!" . $e->getMessage(). "<br/>";

}

}


// get database tables prefix
public static function prefix() {

$prefix = 'tb_'; // once done will be set dynamically

return $prefix;
}


// get all users from db
public static function get_users() {

$db = self::_db_connect();
$prf = self::prefix();

$st = $db->query('SELECT * FROM '.$prf.'users'); // this is the line #72 where error

while($row = $st->fetch(PDO::FETCH_ASSOC))
$rs[] = $row;

return count($rs) ? $rs : array();

}


?>

编辑:我已删除 null 并在此处返回 PDO 对象

    // get database connection
private static function _db_connect() {

try {

$db_con = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_pass);
return $db_con;

} catch (PDOException $e) {

print "Error!" . $e->getMessage(). "<br/>";

}

}


// get database tables prefix
public static function prefix() {

$prefix = 'tb_'; // once done will be set dynamically

return $prefix;
}


// get all users from db
public static function get_users() {

$db = self::_db_connect();
$prf = self::prefix();

$st = $db->query('SELECT * FROM '.$prf.'users'); // this is the line #72 where error

while($row = $st->fetch(PDO::FETCH_ASSOC))
$rs[] = $row;

return count($rs) ? $rs : array();

}


?>

最佳答案

您不会从 db_connect 方法返回任何内容,因此默认情况下返回 NULL。本质上,您试图调用 NULL->query(),这显然没有意义。

修改 db_connect 以返回它创建的 PDO 对象。

关于php - PDO 和类给出 fatal error : Call to a member function query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14411963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com