Предположите, America's Best Inn
Adams' Inn
America's Best Inn
хранится в создании таблицы db
Я должен проверить America's Best Inn
Adams' Inn
America's Best Inn
$EstablishmentName
переменной переменной
$stmt = $sql->prepare("SELECT ID FROM `establishment` WHERE Name=? LIMIT 1"); $stmt->bind_param("s",$EstablishmentName); $stmt->execute(); $stmt->store_result(); print $stmt->num_rows;
Проблема в том, что я не могу их найти.
ВЫХОД 0
Примечание: вложенное значение $EstablishmentName
mb_convert_string($EstablishmentName,'HTML-ENTITIES')
с mb_convert_string($EstablishmentName,'HTML-ENTITIES')
иначе вы получите ошибку. Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
UPDATE: я использую set_charset('utf8')
для клиентской стороны; таблица charset – utf8, а сортировка – utf8_general_ci
. Текст кодируется как исходный текст. Я использую следующий DB Manager: SQLyog и PHPMyAdmin.
ОБНОВЛЕНИЕ # 2: Я прикрепил скриншот к вам, чтобы посмотреть, что я говорю правильную кодировку.
Я использую $sql->set_charset('utf-8');
массив ( [BrandName] => Лучшая цена Америки [try1] => 1 ) массив ( [BrandName] => Adams 'Inn [try1] => 0 ) массив ( [BrandName] => Ambassador Inn and Suites [try1] => 1 ) массив ( [BrandName] => Amberley Suite Hotel [try1] => 1 ) массив ( [BrandName] => Лучшая цена Америки [try1] => 0 )
ОБНОВЛЕНИЕ # 3 Хорошо, извините. Имя столбца было latin1_swedish_ci
.
Я обновил столбец Name
:
ALTER TABLE establishment MODIFY NAME VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci;
Теперь это должно работать без mb_convert_string()
.
Просто положите
mysqli_set_charset($db_connection, 'utf8');
после подключения к базе данных.
пример
$con=mysqli_connect("localhost", "root", "xxxxx","database"); mysqli_set_charset($con, 'utf8');
Единственное, что я мог сказать, что вижу много путаниц здесь
Предполагая, что вы можете получить стоимость Adams' Inn America's Best Inn
основанную на id, позвольте мне предложить вам ее получить, а затем сравнить вручную. var_dump (). Если вы все еще не видите разницу – urlencode (), то сначала
Это решило проблему:
iconv('windows-1250', 'utf-8', $EstablishmentName);