mysqli подготовленный оператор не может читать unicode

Предположите, 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: Я прикрепил скриншот к вам, чтобы посмотреть, что я говорю правильную кодировку.

screenshot_1

Я использую $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() .

Related of "mysqli подготовленный оператор не может читать unicode"

Просто положите

 mysqli_set_charset($db_connection, 'utf8'); 

после подключения к базе данных.

пример

 $con=mysqli_connect("localhost", "root", "xxxxx","database"); mysqli_set_charset($con, 'utf8'); 

Единственное, что я мог сказать, что вижу много путаниц здесь

  • подготовленные заявления здесь неактуальны, поскольку они реализуют только метод подстановки данных, но не изменяют сами данные. У вас будет тот же результат, добавляющий значение в базу данных напрямую.
  • mb_convert_string не может вызвать недопустимое смешение ошибок сортировки, так как эта ошибка инициируется конфликтом внутренних внутренних кодировок, а не форматом данных.
  • нет кода для доказательства того, что сохраненное значение равно значению, используемому для проверки

Предполагая, что вы можете получить стоимость Adams' Inn America's Best Inn основанную на id, позвольте мне предложить вам ее получить, а затем сравнить вручную. var_dump (). Если вы все еще не видите разницу – urlencode (), то сначала

Это решило проблему:

 iconv('windows-1250', 'utf-8', $EstablishmentName);