Я пытаюсь преобразовать свое приложение с использованием устаревшего синтаксиса mysql в PDO для подключения к базе данных и выполнения запросов, и до сих пор это было больно.
Прямо сейчас у меня есть класс, db_functions.php, в котором я пытаюсь создать PDO-соединение с базой данных, а также выполнять все операции CRUD внутри.
Вот пример кода:
db_functions.php <?php class DB_Functions { private $db; // constructor function __construct() { require_once 'config.php'; // connecting to mysql try { $this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD); } catch (PDOException $e) { $output = 'Unable to connect to database server.' . $e->getMessage(); exit(); } } // destructor function __destruct() { } public function getAllUsers() { try { $sql = "select * FROM gcm_users"; //$result = mysql_query("select * FROM gcm_users"); $result = $this->$db->query($sql); return $result; } catch (PDOException $e) { $error = 'Error getting all users: ' . $e->getMessage(); } }
С этим кодом я получаю следующую ошибку:
Notice: Undefined variable: db in C:\xampp\htdocs\gcm\db_functions.php on line 12 Fatal error: Cannot access empty property in C:\xampp\htdocs\gcm\db_functions.php on line 12
Строка 12:
$this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD);
Как я могу исправить это, чтобы у меня был надлежащий экземпляр подключения PDO
к моей базе данных, который я могу использовать для создания запросов в других методах в db_functions
, таких как getAllUsers()
Я использовал ответ, найденный в разделе Как создать класс соединения с инъекцией зависимостей и интерфейсами? но безрезультатно.