Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Настройка кодировки MySQL
Форумы портала PHP.SU » » Работа с СУБД » Настройка кодировки MySQL

Страниц (1): [1]
 

1. wf778899 - 11 Января, 2016 - 09:34:47 - перейти к сообщению
Всем привет! Проблема у меня такая: пытаюсь из-под PHP записать в таблицу MySQL (Server Version 5.5.44) пару столбцов на русском языке, код ниже:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         $db_hostname = 'localhost';
  3.         $db_database = 'Skyrim';
  4.         $db_user = 'Engineer';
  5.         $db_password = 'qwerty';
  6.        
  7.         $connection = new mysqli($db_hostname, $db_user, $db_password, $db_database);
  8.  
  9.         echo $connection->character_set_name()."  ";   
  10.         $connection->set_charset('cp1251');
  11.         echo $connection->character_set_name()."  ";   
  12.         $connection->query("INSERT INTO profiles VALUES('Что-то', 'в кодировке', 'cp1251')");
  13.  
  14.         if($connection->error) echo $connection->error;
  15.        
  16.         $connection->close();
  17. ?>


Работаю в ZendServer. Скрипт упорно отказывается записывать в базу русские символы и выдаёт ошибку:
latin1 cp1251 Incorrect string value: '\xD7\xF2\xEE-\xF2\xEE' for column 'user' at row 1
Как видно, я поменял кодировку базы с latin1 по умолчанию на кириллицу cp1251, на всякий случай проверил, поменялась. Ещё я поменял кодировку по умолчанию в php.ini с UTF-8 на windows-1251. Но не взошло. Если оставить кодировку базы по умолчанию, скрипт работает, но кириллица пишется кракозяберно, если зайти в базу из-под командной строки и проверить записанное. В чём тут может быть проблема, подскажите, пожалста...
2. andrewkard - 11 Января, 2016 - 10:14:03 - перейти к сообщению
wf778899
Какова кодировка БД, таблицы и поля?
3. wf778899 - 11 Января, 2016 - 10:19:16 - перейти к сообщению
andrewkard пишет:
wf778899
Какова кодировка БД, таблицы и поля?


Эмм. В смысле? Я ж говорю - поменял на cp1251, по умолчанию была latin1. Или есть ещё какие-то настройки?
4. andrewkard - 11 Января, 2016 - 10:38:39 - перейти к сообщению
wf778899 пишет:
Я ж говорю - поменял на cp1251

Везде? Нужно и в базе данных, и в табличке и в самом поле. Кодировка файла со скриптом какая?
5. wf778899 - 11 Января, 2016 - 10:48:47 - перейти к сообщению
andrewkard пишет:
wf778899 пишет:
Я ж говорю - поменял на cp1251

Везде? Нужно и в базе данных, и в табличке и в самом поле. Кодировка файла со скриптом какая?

А, значит $connection->set_charset('cp1251') меняет кодировку только в базе? Кодировка скрипта ANSI->Кириллица->Windows1251 (пишу в Notepade++). А как выставить кодировку в таблице и в ячейке тогда? В пхп таких функций не нашёл..
6. andrewkard - 11 Января, 2016 - 10:57:33 - перейти к сообщению
wf778899 пишет:
меняет кодировку только в базе?

Задает набор символов по умолчанию, который будет использоваться при обмене данными с сервером баз данных. phpMyAdmin есть? С его помощью можно настроить. Либо как то так:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. ALTER DATABASE `имя базы` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
  3. ALTER TABLE `tablename` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
  4. ALTER TABLE `tablename` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
  5.  
7. wf778899 - 11 Января, 2016 - 13:33:56 - перейти к сообщению
Хорошо, спасибо, буду пробовать...

 

Powered by ExBB FM 1.0 RC1