Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Архив технической поддержки IntB до версии 2.15 »   Решение проблемы с кодировкой на PHP 5 и MySQL
RSS

Решение проблемы с кодировкой на PHP 5 и MySQL

Для тех, у кого форум установлен на localhost

Текущий рейтинг темы: 4.0000
Выводить сообщения
Правила раздела

<<Назад  Вперед>>Страницы: 1 * 2
Модераторы: aerograf, wsx
Печать
 
eugrus
Участник Проекта

eugrus
Всего сообщений: 420
Рейтинг пользователя: 5


Ссылка


Дата регистрации на форуме:
14 мар. 2005

XXXX Pro написал:
[q]

Проблема решается следующим образом: необходимо открыть файл index.php (расположенный в корне форума) и там после

if ($DBpersist) $link=db_pconnect($DBhost,$DBusername,$DBpassword);
else $link=db_connect($DBhost,$DBusername,$DBpassword);
db_select_db($DBname,$link);

дописать вот такой код:

if ($DBdriver=="mysql") {
$sql = "SET NAMES 'cp1251'";
db_query($sql,$link);
}
[/q]


В IntB 2.13 это вызвало такую ошибку:

GLOBAL FORUM ERROR: SET NAMES 'cp1251'<br>1064: You have an error in your SQL syntax near 'NAMES 'cp1251'' at line 1

---
Russian UNIX Forums
eugrus
Участник Проекта

eugrus
Всего сообщений: 420
Рейтинг пользователя: 5


Ссылка


Дата регистрации на форуме:
14 мар. 2005

XXXX Pro написал:
[q]
2) перевести на UTF-8 вообще все (и выложить это дело либо как дополнительный язык - Russian UTF-8)
[/q]


Угу, я об этом.

---
Russian UNIX Forums
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001

eugrus написал:
[q]
В IntB 2.13 это вызвало такую ошибку:
[/q]

Тут дело не в версии IntB, а в версии MySQL, скорее всего. По-моему, до 4.1 вместо SET NAMES надо писать что-то еще (но сейчас точно не помню, что именно).

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Destiny
Новичок


Всего сообщений: 2
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 мая 2006
Помогите пожалуйста.
Ошибка вот такая.

GLOBAL FORUM ERROR: SET NAMES 'cp1251'<br>1064: You have an error in your SQL syntax near 'NAMES 'cp1251'' at line 1

Версия мускуля 3.23.58
Версия PHP 4.3.10
Форум очень понравился хотелось бы его использовать.
wsx
Модератор форума

wsx
Всего сообщений: 256
Рейтинг пользователя: 12

Репутация пользователя: 2

Ссылка


Дата регистрации на форуме:
14 янв. 2005
Destiny, в первом посте сказано, что это проблема PHP5, а не ``Версия PHP 4.3.10``.



Так что вот это:

if ($DBdriver=="mysql") {
  $sql = "SET NAMES 'cp1251'";
  db_query($sql,$link);
}


не нужно...

---
Не всё так просто, как на самом деле!
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
А может проблема в кавычках?

$sql = "SET NAMES cp1251";

хотя и так и так должно быть верно...
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003

Destiny написал:
[q]
Версия мускуля 3.23.58
Версия PHP 4.3.10
[/q]

А для этих версий вообще не нужно ничего делать. wsx прав.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
В MySQL 3.x явной работы с кодировками по-моему, вообще не было, или можно было настроить только кодировку по умолчанию для сервера. Так что никаких дополнительных действий с самим движком совершать не надо.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Destiny
Новичок


Всего сообщений: 2
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 мая 2006
Извените, возможно я что тоне так понял....
Я дописал в index.php и admim/index.php потому что в начале вот такие ошибки

GLOBAL FORUM ERROR: SELECT u.*, lv.*, ln.*, st.*, u__pmcount AS pmcount, u__warnings AS uw_count FROM(( ib_User u, ib_Language ln, ib_StyleSet st ))LEFT JOIN (ib_LastVisit lv) ON (lv.uid=u.u_id AND lv.fid="0") WHERE ln.ln_id=u.u_lnid AND st.st_id=u.u_stid AND u_id="1"<br>1064: You have an error in your SQL syntax near '(ib_LastVisit lv) ON (lv.uid=u.u_id AND lv.fid="0") WHERE ln.ln_id=u.u_lnid AND ' at line 1

поэтому я подумал что дело в кодировке.. и сделал допись в эти файлы....
Теперь пожалуйста скажи в чем проблема тут?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Объясняется это следующим: в версии 5.x требовалось, чтобы список таблиц после FROM( был взят в скобки (из-за изменения приоритета )LEFT JOIN). MySQL 4 такое воспринимает корректно, а вот MySQL 3.x, как выяснилось, — нет. Чтобы исправить ситуацию, нужно отредактировать файл db/mysql.php (функция db_query) и закомментировать (или удалить) там следующие строки:
  if (strpos(strtoupper($query),"SELECT")!==false) {
    $query=preg_replace("/FROM([^\"\']+?)LEFT\s+?JOIN/is","FROM(($1))LEFT JOIN",$query);
  }

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
<<Назад  Вперед>>Страницы: 1 * 2
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Архив технической поддержки IntB до версии 2.15 »   Решение проблемы с кодировкой на PHP 5 и MySQL
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.1076. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!