Я только начал изучать PDO, строго не судите ))
function __autoload($name){ include($_SERVER['DOCUMENT_ROOT']."/classes/_new.".$name.".php");}
$config = new config;
$db = new db($config);
global $pdo;
//переменные + проверка
$pdo->prepare("INSERT INTO db_users_a (user, email, pass, referer, referer_id, date_reg, ip)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$arr = array('$login', '$email', '$pass', 'admin', '1', '$time', INET_ATON('$ip'));
$pdo->execute($arr);
Подключение находится в стороннем файле с классом db
class db{
private $config;
public function __construct(Config $config)
{
$this->config = $config;
$this->connect();
}
private function connect()
{
$host = $this->config->host;
$dbname = $this->config->base;
$charset = $this->config->charset;
$user = $this->config->user;
$pass = $this->config->pass;
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_LAZY,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
return $this;
}
}
Предполагаю что дело в $db->$pdo->prepare(...). Пробовал по-разному ($db->prepape, $db->pdo->prepare, $pdo->prepare) ничего не получается. Когда все в одном файле - это легко сделать. Но тут нужно каким-то образом обращаться к pdo в классе. Думаю нужно сделать функции prepare() и execute() в классе db, но как в таком случае передавать массив с данными для запроса?
Полный текст ошибки:
Fatal error: Uncaught Error: Call to a member function prepare() on null in E:\OSPanel\domains\test.ru\api\ajax.php:19
Stack trace:
#0 {main}
thrown in <b>E:\OSPanel\domains\test.ru\api\ajax.php on line 19
Подключение корректно. Сразу извиняюсь за такое корявое описание проблемы.