Столкнулся с такой проблемой, что при повторной инициализации переменной с соединением пишет ошибку:
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`а, а именно использование статических переменных класса.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Разрабатываю ajax поиск по сайтуИспользую jquery, php, bitrix
Как добиться того, чтобы удалить ПЕРВОЕ слово из переменной в SMARTY? Для примера: Из "Привет стаковерфлоу, мне нужна помощь" в " стаковерфлоу,...