Ошибка 1267 Неверное смешение параметров сортировки

0

Я выполняю следующий запрос

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.

  • 0
    Как адрес вводится пользователем? Пожалуйста, покажите также HTML и PHP код.
  • 0
    @RaymondNijland Обновил мой вопрос
Показать ещё 3 комментария
Теги:

1 ответ

0

Найденная проблема, таблица была настроена на сопоставление UTF-8, но столбец был установлен на латинский.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню