Добавление комментариев в поле comments таблицы users

Технические вопросы по UTM 5.0
Ответить
tesla
Сообщения: 37
Зарегистрирован: Ср дек 10, 2008 09:45

Добавление комментариев в поле comments таблицы users

Сообщение tesla »

Необходимо заапдейтить поля comments В таблице users.
Пытаюсь сделать обычным спсобом.

Код: Выделить всё

#!/usr/bin/perl
use DBI;
$dsn = "DBI:mysql:UTM5;localhost";
$dbh = DBI->connect($dsn, 'utm', '');
open(DAT,"comments_utm.txt");
while &#40;<DAT>&#41; &#123;
&#40;$login, $comments&#41; = split &#40;/;/, $_&#41;;
print "$login\n";

$sth = $dbh->prepare&#40;"update users set comments = '$comments' where login = '$login';"&#41;;
$sth->execute;
$sth->finish;
&#125;
$dbh->disconnect;
close&#40;DAT&#41;;

Получаю лабуду в поле комментариев.
Поиском посмотрел на форуме похожие темы. Мыслей не накатило полезных.

show variables ввыдало:

collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

Чую где-то рядом отгадка! :D

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Re: Добавление комментариев в поле comments таблицы users

Сообщение Chrst »

tesla писал(а):Чую где-то рядом отгадка! :D
А база в какой кодировке? Обычно это utf8. Поэтому iconv...

tesla
Сообщения: 37
Зарегистрирован: Ср дек 10, 2008 09:45

Re: Добавление комментариев в поле comments таблицы users

Сообщение tesla »

Chrst писал(а):
tesla писал(а):Чую где-то рядом отгадка! :D
А база в какой кодировке? Обычно это utf8. Поэтому iconv...
Верно! Делал и такое. Не помогло.

Даже ручками создавал 1 тестовую в файле запись "Вася Пупкин" - проверил на сайте
_artlebedev.ru/tools/decoder_
кодировка UTF-8. Залил через скрипт - тот же результат.
База в UTF-8.

Может в скрипте при коннекте нужно указывать принудительно какую то кодировку?

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Может это поможет перед апдейтом:
"set character_set_connection=utf-8"
"set names utf-8"

Или надо "utf8" указывать? Что-то запамятовал..

tesla
Сообщения: 37
Зарегистрирован: Ср дек 10, 2008 09:45

Сообщение tesla »

Kayfolom писал(а):Может это поможет перед апдейтом:
"set character_set_connection=utf-8"
"set names utf-8"

Или надо "utf8" указывать? Что-то запамятовал..
Помогло - спасибо! Добавил $dbh -> do(qq~SET NAMES utf8~);
В итоге получился итоговый код в таком виде.

Код: Выделить всё

#!/usr/bin/perl
use DBI;
$dsn = "DBI&#58;mysql&#58;UTM5;localhost";
$dbh = DBI->connect&#40;$dsn, 'utm', ''&#41;;

#----------------------------------------------------------------------------
$dbh -> do&#40;qq~SET NAMES utf8~&#41;;
#----------------------------------------------------------------------------

open&#40;DAT,"comments_utm.txt"&#41;;
while &#40;<DAT>&#41; &#123;
&#40;$login, $comments&#41; = split &#40;/;/, $_&#41;;
print "$login\n";

$sth = $dbh->prepare&#40;"update users set comments = '$comments' where login = '$login';"&#41;;
$sth->execute;
$sth->finish;
&#125;
$dbh->disconnect;
close&#40;DAT&#41;;

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

а ежели бы вы сказали серверу set names koi8r или какая у вас там консоль и удобная кодировка - он бы на лету перекодировал это в кодировку базы.Косяк может в таком случае вылезти только если база сама в latin1 или другой кодировке без русских буквов.

Ответить