假设 Adams’ Inn
America’s Best Inn
存储在db表中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
附注else你最终会$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')
用于客户端;表字符集是 utf8,排序规则是utf8_general_ci
. 文本被编码为原始文本。我正在使用以下数据库管理器:SQLyog 和 PHPMyAdmin。
更新#2:我附上了屏幕截图,让您看看我正在告诉正确的字符集。
我用$sql->set_charset('utf-8');
大批 ( [品牌名称] => 美国最佳价值旅馆 [尝试1] => 1 ) 大批 ( [品牌名称] => 亚当斯旅馆 [尝试1] => 0 ) 大批 ( [品牌名称] => 大使套房酒店 [尝试1] => 1 ) 大批 ( [品牌名称] => 安伯利套房酒店 [尝试1] => 1 ) 大批 ( [品牌名称] => 美国最佳价值旅馆 [尝试1] => 0 )
更新#3好的,对不起。该列Name
是latin1_swedish_ci
。
我已经更新了专栏Name
:
ALTER TABLE establishment MODIFY NAME VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci;
这应该在没有mb_convert_string()
现在的情况下工作。