1 (изменено: KombaInER, 2007-06-12 16:04:06)

Тема: Видимо в сотый раз о кодировках

Значит пытаюсь с помощью PHP выполнить SQL-запрос, но выполняется он плохо.

$sql = 'INSERT INTO `dev`.`loca` (`test`, `dates`) VALUES ("'.$POST['varik'].'", \'date\');';

смотрю в pma-а там идет в ячейке test пусто, ну а в ячейке dates слово date. Глянул на главную страницу pma-а там такая фраза

MySQL-кодировка: UTF-8 Unicode (utf8)

Я немного в недоумении, как так. Зашел в консоль мускуля. Там пробил следующее

mysql> \s
--------------
mysql.exe  Ver 14.12 Distrib 5.0.27, for Win32 (ia32)

Connection id:          112
Current database:
Current user:           ODBC@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.0.27-community-nt
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    cp1251
Db     characterset:    cp1251
Client characterset:    cp1251
Conn.  characterset:    cp1251]

Объясните в чем проблема, везде стоит цп1251, даже на сравнение на базе стоит цп1251_генерал_ци. Но когда удаляю какую-то ячейку, то там есть строчка using UTF-8. В чем проблема?

Да, вот еще, может будет полезно, тут тоже фигурирует ютф-8

Переменная Значение сессии / Глобальное значение  
auto increment increment 1 
auto increment offset 1 
automatic sp privileges ON 
back log 50 
basedir C:\Program Files\MySQL\MySQL Server 5.0\ 
binlog cache size 32,768 
bulk insert buffer size 8,388,608 
character set client utf8 
(Глобальное значение) cp1251 
character set connection utf8 
(Глобальное значение) cp1251 
character set database cp1251 
character set filesystem binary 
character set results utf8 
(Глобальное значение) cp1251 
character set server cp1251 
character set system utf8 
character sets dir C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ 
collation connection utf8_unicode_ci 
(Глобальное значение) cp1251_general_ci 
collation database cp1251_general_ci 
collation server cp1251_general_ci
"ТЫ должен быть сильным, иначе-зачем тебе быть" В.Цой

2

Re: Видимо в сотый раз о кодировках

$sql = 'INSERT INTO `dev`.`loca` (`test`, `dates`) VALUES ("'.$POST['varik'].'", \'date\');';

Всегда имейте в виду, что на выходе вы получаете то, что запрашиваете.

$sql = 'INSERT INTO `dev`.`loca` (`test`, `dates`) VALUES ("'.$_POST['varik'].'", \'date\');';

$POST['varik'] - Пропущен символ нижнего подчеркивания в имени глобальной переменной.

KombaInER сказал:

ну а в ячейке dates слово date

А что там должно быть, если вы его сами вставили?

KombaInER сказал:

Глянул на главную страницу pma-а там такая фраза

За строку на главной отвечает данная переменная:
character set client utf8
Все так и должно быть, ведь phpMyAdmin работает в utf-8, соответственно и клиентская кодировка установлена.

Проблему не понял. Опишите подробнее, в чем она заключается?

3

Re: Видимо в сотый раз о кодировках

Hanut сказал:

Проблему не понял. Опишите подробнее, в чем она заключается?

вообщем не записываются русские символы в базу, англицкие пишу-отображаются, русские-нифига. Даже запрос толком не идет

"ТЫ должен быть сильным, иначе-зачем тебе быть" В.Цой

4

Re: Видимо в сотый раз о кодировках

KombaInER
Если скрипт подключается под root, попробуйте создать отдельного пользователя. При настройках из статьи "Инструментарий веб-разработчика", все будет работать. Посмотрите раздел "Статьи" сайта, там детально разобраны решения проблем с кодировкой.

5

Re: Видимо в сотый раз о кодировках

ха, сделал запрос не под рутовым акком и пошло big_smile

"ТЫ должен быть сильным, иначе-зачем тебе быть" В.Цой

6

Re: Видимо в сотый раз о кодировках

KombaInER сказал:

ха, сделал запрос не под рутовым акком и пошло

Правильно. Root - это административный пользователь, и не все настройки уровня конфигурационного файла на него действуют, например,
init-connect="SET NAMES cp1251"
на root, не распространяется.

7

Re: Видимо в сотый раз о кодировках

Hanut сказал:

Правильно. Root - это административный пользователь, и не все настройки уровня конфигурационного файла на него действуют, например,
init-connect="SET NAMES cp1251"
на root, не распространяется.

может именно это и дописать в статьи. А то поменял акк, как сказано в статье, а почему... Скажем так, образовательный момент будет smile

"ТЫ должен быть сильным, иначе-зачем тебе быть" В.Цой

8

Re: Видимо в сотый раз о кодировках

KombaInER
В данном случае речь идет о использовании, а статья относится к установке и настройке программ веб-сервера. В статью засунуть, просто не куда.

К тому же не использовать учетную запись root - это должно подразумеваться само-собой.

Сейчас данный момент освещен в статье о проблеммах кодировок. В будущем, возможно, осветим где-нибудь еще.

9

Re: Видимо в сотый раз о кодировках

KombaInER сказал:

может именно это и дописать в статьи. А то поменял акк, как сказано в статье, а почему... Скажем так, образовательный момент будет smile

Hanut сказал:

В будущем, возможно, осветим где-нибудь еще.

Про пользователя root лучше будет написать в нашем глоссарии: http://php-myadmin.ru/glossary/

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

10

Re: Видимо в сотый раз о кодировках

Lokki
Предлагаю пример статьи в глоссарий.

Root (в контексте MySQL) - привилегированный пользователь имеющий доступ ко всем функциям базы данных. Учетная запись root должна быть используема исключительно в административных целях.

11

Re: Видимо в сотый раз о кодировках

Hanut сказал:

Предлагаю пример статьи в глоссарий.
Root (в контексте MySQL) - привилегированный пользователь имеющий доступ ко всем функциям базы данных. Учетная запись root должна быть используема исключительно в административных целях.

Принято к исполнению: http://php-myadmin.ru/glossary/#glossar_root

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)