我正在运行以下查询
SELECT * FROM leads WHERE LCASE(address) = "2560 Cherry cir"
我收到错误
General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
我认为有一些奇怪的空格字符会导致错误(2560:Cherry's cir)
地址由用户输入,并提交到使用PDO汇编和运行查询的php页面。
<input type='text' name='address' />
$this->db->select(
"SELECT
*
FROM leads
WHERE
LCASE(address)=:address
array( ":address" => strtolower($address) ) );
select函数定义如下:
public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
{
$sth = $this->handleDB->prepare($sql);
foreach ($array as $key => $value) {
$sth->bindValue("$key", $value);
}
$sth->execute();
return $sth->fetchAll($fetchMode);
}
我该如何解决这个问题?数据库和表的排序规则都是UTF-8?我在PHP中使用PHP,并在PDO中将字符集设置为UTF-8。
答案 0 :(得分:0)
发现问题,该表设置为UTF-8排序规则,但该列设置为拉丁文。