0

我将代码从 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. 请让我知道以下查询的正确语法是什么,使用“like”和“COLLATE”:

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

  2. 有没有办法将排序规则添加到 PDO bindValue() ?

谢谢。

4

1 回答 1

0

解决了:

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 )
于 2015-11-18T10:03:43.960 回答