Привет, я использую класс PDO DB для подключения к базе данных. Но я действительно задаюсь вопросом, правильно ли я делаю это или нет. Все соединения выполняется очень хорошо, но i get error when i run a query
PDO-соединение Не работает по мере необходимости
Моя структура каталогов
/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
тогда я получаю следующее сообщение об ошибке
Ошибка синтаксического анализа: ошибка синтаксиса, неожиданный '::' (T_PAAMAYIM_NEKUDOTAYIM) в dbops/dbfunctions/DBFuncts .php на линии
Пожалуйста, руководство. Я уже потратил 2 часа на эту проблему и искал походы.
Как это может быть дубликат. Моя проблема отличается от других. – Gags
Почему вы размещаете обертку вокруг PDO? – SpacePhoenix
Этот pdo работает, когда я просто включаю этот файл, но когда я пытаюсь пройти через классы, я сталкиваюсь с проблемами. Так что обертка вокруг PDO не вызывала проблем.Если вы знаете о sol, то любезно сообщите мне – Gags