2012-01-09 2 views
0

В настоящее время я пытаюсь переключиться с моей общей учетной записи inmotionhosting (получив AWEFUL сервис в последнее время) на сервер Amazon EC2, который я настроил. У меня возникли проблемы с получением функции шифрования, работающей в учетной записи EC2.mysql кодирование зашифрованного текста

В моем PHP-коде весь текст шифруется mcrypt перед тем, как быть помещенным в SQL. Я вывел, что эти символы mcrypt отвечают за все мои запросы, бросая ошибки. (Я знаю, это из-за проблем с кодировкой, но поиски Google по этому вопросу не очень ясны, когда мне нужно сосредоточить свое внимание.)

Более упрощенный способ объяснения проблемы. На моей новой учетной записи хостинга этот запрос будет не работает:.

UPDATE mydatabase.clients SET ПгвЬЫате = '\' А »» é¶Q»WHERE id_client = 65

Но это делает

UPDATE mydatabase.clients SET firstname = 'Test' WHERE id_client = 65

Таким образом, функция mcrypt позволяет использовать символы, которые база данных SQL не понимает, и, следовательно, запросы не работают.

Некоторой другая информация для вас ...

Когда я бег «SHOW ПЕРЕМЕННЫХ LIKE„%“character_set_» на рабочей базе данных я получаю это:

Variable_name    Value 
character_set_client  utf8 
character_set_connection utf8 
character_set_database  latin1 
character_set_filesystem binary 
character_set_results  utf8 
character_set_server  latin1 
character_set_system  utf8 

Когда я делаю это на нерабочем базы данных я получаю:

Variable_name    Value 
character_set_client  utf8 
character_set_connection utf8 
character_set_database  utf8 
character_set_filesystem binary 
character_set_results  utf8 
character_set_server  utf8 
character_set_system  utf8 

я увидел разницу в character_set_database и запустил эту строку кода:

ALTER DATABASE mydatabase DEFAULT CHARACTER SET latin1

Он успешно сменил character_set_database на "latin1", чтобы соответствовать другому, но не решил проблему.

Наконец, все мои столбцы в моих таблицах используют параметры сортировки «latin1_swedish_ci»

Любая помощь вы могли бы дать бы очень очень признателен!

ответ

1

Храните свои зашифрованные строки в виде двоичного (или аналогичного) типа. Также убедитесь, что вы избегаете зашифрованной строки. Оба являются важными частями, чтобы делать это правильно!

Я работаю с MySQL и Mcrypt, и я храню свои зашифрованные данные и векторы инициализации как двоичные, и я избегаю всех этих строк, прежде чем они будут помещены в запрос. Работает как шарм.

Смежные вопросы