【发布时间】:2014-06-27 13:38:52
【问题描述】:
我正在使用 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();
我收到Call to undefined method DB::prepare() 的错误。请帮助解决这个问题,因为它在本地工作没有任何问题,当我上传到实时服务器时,我收到了这些错误。
【问题讨论】:
-
您运行的是什么版本的 PHP?
__callStatic是在 5.3.0 中添加的。 -
在服务器上.. PHP 版本是 5.. 有什么出路吗?
-
升级到非史前的东西。 5.3.0 5 年前问世。
-
服务器上的版本是 5.2.17
-
好吧,这实际上不是史前的,因为它是在 5.3.0 之后 18 个月发布的。但是如果你想使用这个特性,你需要使用一个有它的PHP版本。