Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Вопрос по таблицам в mySQL и работе с ними в PHP (http://www.flasher.ru/forum/showthread.php?t=140313)

Egoritch 26.05.2010 14:07

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

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

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

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

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

Подскажите, пожалуйста, что делать? При коннекте к базе я выполняю запрос "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 в условии и потом я просто не всё поудалял. Да не важно это.
Ок, спасибо ребята, за сопереживание.


Часовой пояс GMT +4, время: 01:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.