PDA

Просмотр полной версии : Вопрос по таблицам в mySQL и работе с ними в PHP


Egoritch
26.05.2010, 14:07
Уважаемые спецы. Вопрос по таблицам в mySQL и работе с ними в PHP. Точнее, наверное, по кодировкам в этих таблицах. Напишу вопрос внутри. Очень прошу помощи. Чтобы раз и навсегда с этим разобраться.

Есть у меня какие-то таблицы в проекте. По умолчанию они создавались в какой-то latin кодировке. Я конвертировал одну из них (edit_maket) в UTF8_unicode_ci (или это мне показалось, что я сконвертировал).
http://img42.**************/img42/6624/picture1zzv.jpg

phpMyAdmin говорит (или я его неправильно понимаю), что все поля в этой таблице - utf8_unicode_ci. То есть максимально правильно должны пониматься русские буквы.
http://img25.**************/img25/7748/picture2dn.jpg

Но когда я пишу запрос поиска с использованием SELECT...LIKE то он находит только буквы и слова в том регистре, как я написал. То есть только маленькие буквы или только большие.
http://img35.**************/img35/5303/picture4ar.jpg

то есть, чтобы он находил записи и с большой буквой "В", и с маленькой "в" мне нужно писать OR, что глупо и не решает вопроса.
http://img36.**************/img36/7311/picture3ga.jpg

Подскажите, пожалуйста, что делать? При коннекте к базе я выполняю запрос "set CHARACTER SET UTF8_unicode_ci" но ничего не меняется.

membrilius
26.05.2010, 22:19
а вам обязательно UTF8?

у меня например сравнение cp1251_general_ci

при каждом подключение ещё даю запрос на всякий случай SET NAMES 'cp1251'

При создание таблиц так же указываю ENGINE=MyISAM CHARACTER SET=cp1251;

Ну и в самих конфигах базы... либо my.cnf либо my.ini

там строчка есть default-character-set=cp1251

точно помню, если что-то забыть, то могут иероглифы сохраняться...
попробуйте сделать то-же самое только для utf8

gldrawworld
26.05.2010, 22:54
ну, не знаю, у меня SELECT*from bla WHERE blabla LIKE %myData%, ищет во всех регистрах ! чтобы искал регистро-зависимо, нада указывать BINARY, то есть
SELECT*from bla WHERE blabla LIKE BINARY %myData%

что то у вас явно не так и не то …*потому что даже в доках, чтобы добиться регистро-зависимоего поиска, добавляют binary …*при обычном же поиске выдаются результаты не регистро-зависимого поиска …*

Добавлено через 2 минуты
а зачем в скобках то указывать условие ? вы вобще доки читаете ?

SELECT*from edit_maket WHERE mKomu LIKE %b%

Egoritch
27.05.2010, 14:56
membrilius: да, я убил базу и создал её вручную и красиво. Просто красиво сконвертировать вчера так и не получилось :( Теперь всё, конечно, работает, когда и база создана с правильным characterset, и таблицы создавались с utf8_general_ci по умолчанию, и каждое текстовое/чаровое поле в них тоже прописывалось как collate utf8_general_ci.
gldrawworld: оно работает, когда везде правильная кодировка. скобочки в третьей картинке стоят, потому что на самом деле я скриншотил её после четвёртой. А в четвёртой был OR в условии и потом я просто не всё поудалял. Да не важно это.
Ок, спасибо ребята, за сопереживание.