Вопрос по программированию на PHP. Про PDO

129
05 мая 2019, 12:40

Столкнулся с такой проблемой, что при повторной инициализации переменной с соединением пишет ошибку:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2019] Can't initialize character set

Например так:

$categories = Category::getCategories();
$lastProds = Product::getLastProducts(3);

Классы Category и Product, их методы получают соединение так:

$db = DB::getConnection();

Класс DB и его метод просто возвращают объект PDO.

Как я заметил, исключение выкидывает, когда я открываю второе соединение:

$lastProds = Product::getLastProducts(3); // 

Внутри этого метода если закоментировать получение соединения, то все вроде работает, но как мне получить два соединения?

Я все правильно понимаю?

Полный принт ошибки:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2019] Can't initialize character set (path: /Applications/MAMP/Library/share/charsets/)' in /Applications/MAMP/htdocs/components/DB.php:6
Stack trace: #0 /Applications/MAMP/htdocs/components/DB.php(6): PDO->__construct('mysql:dbname=;h...', NULL, NULL)
#1 /Applications/MAMP/htdocs/models/Product.php(5): DB::getConnection()
#2 /Applications/MAMP/htdocs/controllers/SiteController.php(5): Product::getLastProducts(3)
#3 [internal function]: SiteController->actionIndex()
#4 /Applications/MAMP/htdocs/components/Router.php(28): call_user_func_array(Array, Array)
#5 /Applications/MAMP/htdocs/index.php(12): Router->run()
#6 {main} thrown in /Applications/MAMP/htdocs/components/DB.php on line 6

Проблему решил, помог совет teran`а, а именно использование статических переменных класса.

READ ALSO
PHP Parse error: syntax error, unexpected '$token' (T_VARIABLE)

PHP Parse error: syntax error, unexpected '$token' (T_VARIABLE)

Передаю с телефона данные в PHP

144
Время отклика php скрипта, при обращении ajax

Время отклика php скрипта, при обращении ajax

Разрабатываю ajax поиск по сайтуИспользую jquery, php, bitrix

129
Как получить данные из SQLite один раз?

Как получить данные из SQLite один раз?

Из базы данных получаю данные по $click_id (id товара)

155
Как удалить первое слово из переменной в SMARTY

Как удалить первое слово из переменной в SMARTY

Как добиться того, чтобы удалить ПЕРВОЕ слово из переменной в SMARTY? Для примера: Из "Привет стаковерфлоу, мне нужна помощь" в " стаковерфлоу,...

141