Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

Переход от php::mysql к php::mysqli

Просмотров: 3482Комментарии: 0
Linux

Я писал, что при переходе на php > 5.5 вылезает рдостная ошибка "Deprecated: mysql_pconnect(): The mysql extension is deprecated and will

be removed in the future: use mysqli or PDO instead in %file_name%" (при условии, что работа с БД была реализована через расширение php::mysql). В общем, я не мудрствуя лукаво, переписал класс для работы c БД на функции рекомендованного расширения php::mysqli.

В принципе все просто, минут 10 - и вуаля, готов новый класс. Под него - обертка, и все. Все работает. Но! Вылезла одна проблема: при работе с mysqli кодировка слетает напрочь. В общем, как показала практика, лечится это несложно. Для лечения надо помнить, что:

1) под root коннкт будет идти в latin1. Соответственно - если коннект на домашней машине (как у меня) был под root - заводим "правильного" пользователя, даем ему нужные привелегии - и прописываем его.

2) сразу же после коннекта устанавливаем кодировку:

$db_id = mysqli_connect($db_host,$db_user,$db_pass,$db_name);

mysqli_set_charset($db_id, $set_names);

Для памяти:

Как в mysql создать пользователя с правами на базу

CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';

GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'localhost' WITH GRANT OPTION;

Хотя все должно подхватываться на лету, "чисто по привычке" рестартую mysql (ну вот такой я извращенец):

$ mysqld restart;

Оставьте комментарий!


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

     

  

(обязательно)