假设 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()现在的情况下工作。