Сравнение строк используя PHP mysql_* НАБОР НАЗЫВАЕТ UTF 8 и Стол Mysql С utf8_unicode_ci

У меня есть таблица Mysql с колонкой государство - государства со всех концов Европы - и стол, и колонки находятся в utf8_unicode_ci .

Когда я называю базу данных, я использую

mysql_select_db($database_WTF, $WTF);
mysql_query('SET NAMES utf8');
$query_Recordset1 = "SELECT * 
     FROM newmeets
     WHERE newmeets.`State` IS NOT NULL 
     AND newmeets.`State` !=  ''
     ORDER BY newmeets.`State` ASC ";

Я тогда управляю им хотя этот простой цикл

mysql_select_db($database_WTF, $WTF);
mysql_query('SET NAMES utf8');
$query_Recordset1 = "SELECT * 
     FROM newmeets
     WHERE newmeets.`State` IS NOT NULL 
     AND newmeets.`State` !=  ''
     ORDER BY newmeets.`State` ASC ";

$LastState = "";
do {
    echo
    var_dump($LastState == $row_Recordset1['State']);
    echo $row_Recordset1['State'];
    $LastState = $row_Recordset1['State'];
    var_dump($LastState == $row_Recordset1['State']);
    echo "

";
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));

В первый раз, когда это поражает новую стоимость как ожидалось, я добираюсь:

булев ложный
БРЮССЕЛЬ
булев верный

В следующий раз я добираюсь:

булев верный
БРЮССЕЛЬ
булев верный

Очень, поскольку я ожидал бы.

Проблема возникает, когда она поражает не латинские символы , когда каждый проход производит:

булев ложный
Баден-Württember
булев верный

Когда я установил их быть равными, они, и затем когда следующий отчет тянут (и каждый отчет был введен тождественно), это терпит неудачу, это - когда я использовал то же самое кодирование, мне на самом деле нужен он, чтобы признать, что они - то же самое, даже если знаки введены по-другому.

Независимо от того, что происходит, я попробовал utf8_encode и Normalizer:: нормализуйте , чтобы получить истинный результат сравнения, таким образом, я могу использовать это в управляющей структуре (например, если вы видели его, прошлый раз не печатает его на этот раз), но это терпит неудачу.

1
nl ja de
Обеспечивают hexdumps рассматриваемых последовательностей .
добавлено автор hakre, источник
Можно ли включать продукцию из ВЫСТАВОЧНЫЙ CREATE TABLE newmeets в вопросе? Может случиться так, что наборы символов и сопоставления на таблице и колонках поддельные.
добавлено автор Charles, источник
Чарльз - является этим, что вы имели в виду? - Структура таблицы для стола newmeets - CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ newmeets ( ID интервал (11) NOT NULL auto_increment, Страна , текст сопоставляет utf8_unicode_ci NOT NULL, , государство varchar (50) сопоставляет utf8_unicode_ci NOT NULL, PRIMARY KEY ( ID )) CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=110 ENGINE=InnoDB ПО УМОЛЧАНИЮ;
добавлено автор Sapfizz, источник
Спасибо Чарльз, шестнадцатеричные свалки были способом рассмотреть его, они показали мне, что, хотя я копировал ценности по, они все еще не были тем же самым... назад к стадии ввода.
добавлено автор Sapfizz, источник
Не уверенный, что я должен сделать, чтобы добавить благодарность вашей репутации?
добавлено автор Sapfizz, источник

1 ответы

Похоже, что у вас есть проблема нормализации в вашей базе данных. Вместо того, чтобы хранить то же самое государство, поскольку последовательность много раз, поставила все государственные имена в стол сам по себе и ссылается на них.

Это также гарантирует, чтобы вы не делали - например, случайно - помещенные двойные различные, но одинаково смотрящие данные в различные ряды, которые вы не в состоянии правильно выровнять позже, как вы просто сделали.

Альтернативно необходимо подвергнуть сомнению отличные ряды и обновить их, так, чтобы вы сделали , по крайней мере , имеют те же самые данные о двоичной строке для одноименных государств. Например, если Mysql в состоянии на самом деле выровнять эти государственные последовательности, но PHP - из-за он - двойная природа последовательностей - не.

0
добавлено
Чарльз - является этим, что вы имели в виду? - Структура таблицы для стола newmeets - CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ newmeets ( ID интервал (11) NOT NULL auto_increment, Страна , текст сопоставляет utf8_unicode_ci NOT NULL, , государство varchar (50) сопоставляет utf8_unicode_ci NOT NULL, PRIMARY KEY ( ID )) CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=110 ENGINE=InnoDB ПО УМОЛЧАНИЮ;
добавлено автор Sapfizz, источник
Жаль игнорируют выше, я хотел писать ИЗБРАННОМУ ГРАФУ ( государство ) КАК "граф", государство GROUP BY государство ORDER BY , государство ОГРАНИЧИВАЕТ 0, 30 графов Государство 61 Баден W\U 0026\\U 0023\252; rttember 4 Баварии 2 БРЮССЕЛЯ 17
добавлено автор Sapfizz, источник
Поскольку только небольшому проценту стола на самом деле назначат государство, я надеялся избежать необходимости хранить их в отдельном столе и ссылаться на них. Все текущие состояния были обновлены к той же самой стоимости, делая обновление на них.
добавлено автор Sapfizz, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp