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 照合が不明です。

現在、DB 全体を utf8_unicode_ci に変更することはできません。

クエリで COLLATE を使用して照合を設定できることは理解していますが、どこに追加すればよいかわかりません。

  1. 次のクエリの「like」と「COLLATE」を使用した正しい構文を教えてください。

    select * from product where ( prd_name_HEB like :t0 または prd_code like :t0 )

  2. PDO bindValue() に照合を追加する方法はありますか?

ありがとう。

4

1 に答える 1