gpt4 book ai didi

php - PDO 连接未按要求工作

转载 作者:行者123 更新时间:2023-11-29 21:52:07 26 4
gpt4 key购买 nike

嗨,我正在使用 PDO DB 类连接到数据库。但我真的想知道我这样做是否正确。所有连接设置都很好,但是 i get error when i run a query

我的目录结构是

/root
/dbops <-- Directory contains `config.php` -->
/dbfunctions <-- Directory contains `DBclass.php` & `DBFuncts.php` -->

现在config.php的内容是:

define( 'DB_HOST', 'localhost' );
define( 'DB_USERNAME', 'root');
define( 'DB_PASSWORD', '');
define( 'DB_NAME', 'testDB');
define('DB_CHAR', 'utf8');

function __autoload($class){
$parts = explode('__', $class);
$path = implode(DIRECTORY_SEPARATOR,$parts);
require_once $path . '.php';
}

DBclass.php包含:

class dbdunctions__DBclass{
public $instance = null;
public 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_USERNAME, DB_PASSWORD,
$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;
}
}

DBFuncts.php包含以下内容:

class dbfunctions__DBFuncts
{
protected $_con;
public function __construct()
{
$db = new dbfunctions__DBclass();
$this->_con = $db->con;
}

function gotodb(array $data){
$result =
$this->_con::instance()->prepare($qry)->execute(array(/*parameters*/));
}
}

现在,当使用 $result 触发查询时然后我收到以下错误

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in dbops/dbfunctions/DBFuncts.php on line 12

请指导。我已经在这个问题上花了 2 个小时并进行了谷歌搜索。

最佳答案

而不是

$this->_con::instance()

你应该能够做到

$this->_con->instance()->prepare($qry)->execute(array(/*parameters*/));

不确定当你输入代码时这是否是一个拼写错误 - 但我确实注意到在 DBclass.php 中你有类 dbdunctions__DBclass - 这当然应该是类 dbfunctions__DBclass() ?

您的示例代码中似乎还存在一些其他错误...但是让我们一次解决一个错误:)

关于php - PDO 连接未按要求工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538134/

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