Драгомир Бутулисов
Оракул
(86592)
1 год назад
Чушь какая то.
База в УТФ, но зачем то вы корячите ее в Вин 1251
В запросе вообще зачем то признак бинарных данных используете.
Наверное стоит почитать про SQL, у вас сплошная ересь.
ICaR SoftГуру (3138)
1 год назад
Это не рабочий код, а отладочный в СУБД Navicat, далее отработанный код пойдёт в ПО.
Я уже с BINARY разобрался(первый комментирующий на мысль навёл). И спасибо. Просто лет 10 не программировал (даже и не припомню на кой болт тогда включал BINARY в этот запрос).
Возрождаю проект.
myodo.ru
Мудрец
(12806)
1 год назад
Для начала экспортни данные целевой таблицы тупо в текст и посмотри, что там действительно есть данные правильной кодировки, что они не побились в одном из апдейтов.
Если все хорошо и с кодировкой, и с данными, смотри как настроить клиент на целевую кодировку, либо рекодируй строки перед показом пользователю.
Если уверен, что с этим тоже хорошо, проверяй шрифты: используемый клиентом шрифт должен иметь набор символов для твоих кодов.
Вообще, пустые значения обычно говорят об отсутствии данных, что проверяем на шаге 1.
ICaR SoftГуру (3138)
1 год назад
Вся загвоздка была в "BINARY" - просто код старый (2012-2014 гг), уже и не помню почему тогда он или работал или я с какой-то целю его тогда использовал.
/* SET NAMES 'utf8' COLLATE 'utf8_general_ci'; (ошибки нет, но отображает пустые поля) */
SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'; /*(и с этим также пустые поля) */
SELECT `login`, `password` FROM users WHERE BINARY `login`='Айснер' AND `password`='Айснер';
/* SHOW VARIABLES LIKE 'character_set_client' - для посмотреть кодировку */
Но стоит сделать лишь так и всё начинает показывать:
SELECT `login`, `password` FROM users WHERE BINARY `login`='Aisner' AND `password`='Aisner'; /* по факту другая запись */
P.S. в 2014 гг проект работал. Но с тех пор поменялись и версии MySQL и многое другое. Что нужно исправить и почему даже сам Navicat не может у себя же отобразить запрос? (отображает пустые данные)