Помогите найти ошибку

maximing

Новичок
Помогите найти ошибку

PHP:
select distinct p.products_store, pd.products_description, p.products_weight, p.products_quantity, p.products_model, pd.products_name, pd.products_name_eng, p.products_image, p.products_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) 
as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as 
final_price from ((products p) , products_description pd) left join specials s on p.products_id = s.products_id, categories c, products_to_categories p2c where p.products_status = '1' and c.categories_status = '1' and p.products_id = pd.products_id and pd.language_id = '4' 
and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and ( (pd.products_name like '%привнт%' or p.products_model like '%привнт%' 
OR pd.products_name_eng LIKE '%привнт%') ) order by pd.products_name
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''%при' at line 2

Помогите найти ошибку в синтаксисе?

Если выражение в like '%%' на латинице, то ошибки не возникает.

Кодировка БД в в cp1251
 

Фанат

oncle terrible
Команда форума
вообще-то, ошибка не в процитированном куске, а перед ним.
ты уверен, что с латиницей нет проблем?

сделай два ТЕКСТОВЫХ запроса, в одну строчку, с латиницей и кирилицей, и приведи их здесь.
если они не работают
 

maximing

Новичок
Для кириллицы:
mysql> select distinct p.products_store, pd.products_description, p.products_weight, p.products_quantity, p.products_model, pd.products_name, pd.products_name_eng, p.products_image, p.products_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from ((products p) , products_description pd) left join specials s on p.products_id = s.products_id, categories c, products_to_categories p2c where p.products_status = '1' and c.categories_status = '1' and p.products_id = pd.products_id and pd.language_id = '4' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and ( (pd.products_name like '%привнт%' or p.products_model like '%привнт%' OR pd.products_name_eng LIKE '%привнт%') ) order by pd.products_name;

ERROR 1267 (HY000): Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'

Для латиницы:
mysql> select distinct p.products_store, pd.products_description, p.products_weight, p.products_quantity, p.products_model, pd.products_name, pd.products_name_eng, p.products_image, p.products_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from ((products p) , products_description pd) left join specials s on p.products_id = s.products_id, categories c, products_to_categories p2c where p.products_status = '1' and c.categories_status = '1' and p.products_id = pd.products_id and pd.language_id = '4' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and ( (pd.products_name like '%Far%' or p.products_model like '%Far%' OR pd.products_name_eng LIKE '%Far%') ) order by pd.products_name limit 0,1;

Тут выводятся данные с базы....

14 rows in set (0.78 sec)

********************
ERROR 1267 (HY000): Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'
Похоже на то, что в запросе учавсвуют данные разных кодировок: cp1251 и latin1.
Вот, что и не нравится MySQL....
 

Фанат

oncle terrible
Команда форума
Как всегда. Дело было не в бобине.
Оказывается, надо было сообщение об ошибке читать глазами, а не другим местом.

следующая итерация - забить сообщение об ошибке в гугль
 
Сверху