Я выполняю следующий запрос
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â € ‰ cir)
Адрес вводится пользователем и отправляется на страницу php, которая использует PDO для сборки и запуска запроса.
<input type='text' name='address' />
$this->db->select(
"SELECT
*
FROM leads
WHERE
LCASE(address)=:address
array( ":address" => strtolower($address) ) );
Функция выбора определяется следующим образом:
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 с PDO и устанавливаю кодировку для UTF-8 в PDO.
Найденная проблема, таблица была настроена на сопоставление UTF-8, но столбец был установлен на латинский.