| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вопросы по базе MySQL |
| Автор: LinGen 7.5.2009, 17:08 |
| У меня возникли проблемы с поиском в базе MySQL, связанные со следующим: есть кода пользователей, которые начинаются на русскую букву, а затем идет цифра, или нет вообще цифр. Когда я задаю к поиску букву Т, в результате выводится также и буква Ц. Тоже самое происходит если искать букву "Д" - выводятся буквы "Б", "В", "Е". Если указать при поиске Д1 выводится А1, хотя Д1 в базе вообще нет. Как в PHP сделать грамотный подобный поиск, чтобы выводилось то, что я хочу? SET Names бызы - latin1, если это поможет. |
| Автор: skyboy 7.5.2009, 18:04 | ||
| с точки зрения кодировки latin1 - что символ "Я", что "Ф", что "Д" будут трактоваться одинаково: "неизвестный символ" и выводится в виде "?". можешь проверить:
возвращает "1". Потому как "?" соответствует "?". Если русский текст, то на кой latin1? Решений 2. Правильное: Перевести содержимое БД в кирилическую кодировку или(лучше) utf-8. при работе из скрипта, устанавливать рабочую кодировку при помощи упомянутого set names. Простое: БД оставить в latin1, но задать регистрозависимый collation: latin1_bin или latin1_cs. При подключении к БД задавать кирилическую кодировку в SET NAMES. Не уверен, что заработает, это скорее догадка. Кроме того не будет регистронезависимости поиска - неудобно. |
| Автор: LinGen 8.5.2009, 09:49 |
| Дело в том, что у меня в базе уже 726 записей, которые в базе сохранены под latin1, а при utf-8 на экране появляются иероглифы. Я в принципе нашел способ как искать то, что надо и он работает. Просто проверять не в строке запроса к базе данных, а читать из нее всю информацию, а затем проверять на совпадения. И надо же работает. |