假设存储在db表Adams’ Inn
America’s Best Inn
establishment
我必须在变量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')
,否则您最终会收到错误Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
更新:我使用set_charset('utf8')
作为客户端;表charset是utf8,排序规则是utf8_general_ci
。文本被编码为原始文本。我使用以下数据库管理器:SQLyog和PHPMyAdmin。
更新#2 :我已附上截图供您查看我正在告诉正确的字符集。
我使用$sql->set_charset('utf-8');
Array ( [BrandName] => America's Best Value Inn [try1] => 1 ) Array ( [BrandName] => Adams' Inn [try1] => 0 ) Array ( [BrandName] => Ambassador Inn and Suites [try1] => 1 ) Array ( [BrandName] => Amberley Suite Hotel [try1] => 1 ) Array ( [BrandName] => America's Best Value Inn [try1] => 0 )
更新#3 好的,抱歉。 Name
列为latin1_swedish_ci
我更新了专栏Name
:
ALTER TABLE establishment MODIFY NAME VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci;
这应该在没有mb_convert_string()
的情况下正常工作。
答案 0 :(得分:0)
刚刚放
mysqli_set_charset($db_connection, 'utf8');
数据库连接后。
示例强>
$con=mysqli_connect("localhost", "root", "xxxxx","database");
mysqli_set_charset($con, 'utf8');
答案 1 :(得分:-1)
我唯一能说出来的是我在这里看到很多混淆
假设你可以根据id获得Adams’ Inn America’s Best Inn
值,我建议你检索它,然后手动比较。 var_dump()他们。如果你仍然看不到差异 - urlencode()他们首先
答案 2 :(得分:-2)
解决了这个问题:
iconv('windows-1250', 'utf-8', $EstablishmentName);