gpt4 book ai didi

php - 调用未定义的方法 DB::prepare()

转载 作者:行者123 更新时间:2023-11-30 00:07:01 24 4
gpt4 key购买 nike

我正在使用 PDO 语句从数据库获取详细信息,下面是我正在使用的 pdo

 <?php
define('DB_HOST', 'localhost');
define('DB_NAME', 's_ao');
define('DB_USER', 'sd');
define('DB_PASS', '****');
define('DB_CHAR', 'utf8');

class DB
{
protected static $instance = null;

final private function __construct() {}
final private function __clone() {}

public static function instance()
{
if (self::$instance === null)
{
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => TRUE,
PDO::ATTR_STATEMENT_CLASS => array('myPDOStatement'),
);
$dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset='.DB_CHAR;
self::$instance = new PDO($dsn, DB_USER, DB_PASS, $opt);
}
return self::$instance;
}
public static function __callStatic($method, $args) {
return call_user_func_array(array(self::instance(), $method), $args);
}
}

class myPDOStatement extends PDOStatement
{
function execute($data = array())
{
parent::execute($data);
return $this;
}
}

现在当我使用

    $sid = $_GET['pmdfe23'];
$sql = "SELECT * FROM checks WHERE id = '".$sid."'";
//echo $sql;
$data = DB::prepare($sql)->execute()->fetchAll();

我收到错误,调用未定义的方法 DB::prepare()。请帮助解决这个问题,因为它在本地工作没有任何问题,当我上传到实时服务器时,我收到这些错误。

最佳答案

__callStatic 包装器的用途是什么?您已经有一个工厂设置来返回一个数据库对象,该对象已经为您提供了具体方法,导致像这样的调用:

$data = DB::instance()->prepare($sql)->execute()->fetchAll();

关于php - 调用未定义的方法 DB::prepare(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444524/

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