Недопустимое сочетание параметров сортировки для операции 'like' с PDO bindValue()

Я изменил свой код с mysql_query на pdo prepare(), bindValue() и execute()

но с новым кодом, когда я связываю значения на иврите с:t0 для запроса

select * from product where ( prd_name_HEB like :t0 or prd_code like :t0 ) 

я получил

General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (hebrew_general_ci,COERCIBLE) for operation 'like'
  • сортировка prd_code - latin1_swedish_ci
  • prd_name_HEB сопоставление hebrew_general_ci
  • :t0 сопоставление неизвестно.

Я не могу изменить всю мою БД на utf8_unicode_ci сейчас.

Я понимаю, что могу использовать COLLATE в своем запросе, чтобы установить параметры сортировки, но я не знаю, где его добавить.

  1. Пожалуйста, дайте мне знать, что является правильным синтаксисом, с "как" и "COLLATE" для следующего запроса:

    выберите * из продукта, где ( prd_name_HEB как:t0 или prd_code как:t0)

  2. Есть ли способ добавить параметры сортировки в PDO bindValue()?

Благодарю.

1 ответ

Решение

Решил:

if searchString.containsHebrewCharacters()
  select * from product where ( prd_name_HEB like :t0 )
else
  select * from product where ( prd_name_HEB like :t0 or prd_code like :t0 )
Другие вопросы по тегам