Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос по выборке данных из БД
Форумы портала PHP.SU » » Работа с СУБД » Вопрос по выборке данных из БД

Страниц (1): [1]
 

1. alogin - 29 Апреля, 2016 - 13:26:19 - перейти к сообщению
Добрый день!

Столкнулся с проблемой выборки данных из БД при использовании запроса с русскими буквами.

есть БД test в кодировке utf8_general_ci
в ней таблица так же в кодировке utf8_general_ci

в таблице 2 столбца eng и rus в которых данные
eng rus
GGGG ГГГГГ
GGGG ГГГГ

и есть php код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbname = 'test';
  4. $link = mysql_connect('localhost', 'root', 'password');
  5. mysql_select_db($dbname,$link);
  6.  
  7. if (!$link) {
  8.     echo 'Ошибка подключения к mysql';
  9.         }
  10.                
  11. $sql = "SELECT count(*) from `test` WHERE `eng` like 'ГГ%'";
  12. $res = mysql_query($sql) or die (mysql_error());
  13. $row = mysql_fetch_row($res);
  14. $k_el = $row[0];
  15. echo $k_el;
  16.  
  17. ?>
  18.  


При использовании sql запроса
SELECT count(*) from `test` WHERE `eng` like 'ГГ%'

Выдает: 0
При использовании запроса
SELECT count(*) from `test` WHERE `eng` like 'GG%'
Выдает 2, как и положено.

Т.е. не идет выборка по русским буквам из БД.

Если делать базу и таблицы в cp_1251_general_ci
то выдает ошибку
Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'

Проблема в кодировке, но как это исправить ?
2. caballero - 29 Апреля, 2016 - 13:44:00 - перейти к сообщению
так надо и сортировку указать в cp1251_general_c

а лучше всего делать все в юникоде
3. alogin - 29 Апреля, 2016 - 15:19:35 - перейти к сообщению
Не понял про сортировку ?
Нужно в sql запросе производить конвертацию в cp1251 ??

 

Powered by ExBB FM 1.0 RC1