Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Mysql --> Dbi
allexeym
Вставить ник
сообщение 17:07:2007, 14:51
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 3
Регистрация: 17:07:2007
Пользователь №: 11 880
Специализация: админ



Репутация: - 0 +


начал переделывать скрипт, который использовал модуль Mysql, под использование модуля DBI

и хотел спросить
как адаптировать
вот такое



Код
@last_shop_id_arr=$sth->fetchcol(0);
@last_shop_name_arr=$sth->fetchcol(1);
@last_shop_subdir_arr=$sth->fetchcol(2);
@last_shop_divid_arr=$sth->fetchcol(3);
@last_shop_time_arr=$sth->fetchcol(4);



под модуль DBI?
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 4)
Vovochka
Вставить ник
сообщение 17:07:2007, 22:27
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 198
Регистрация: 4:08:2006
Из: Vladivostok.pm
Пользователь №: 5 749
Специализация: Perl, Web



Репутация: - 4 +


Бу га га... sad.gif

Не плохо было бы увидеть весь код запроса... При использовании DBI это скорее всего бедет выглядеть так:
Код
$dbh = DBI->connect(....);
$sth = $dbh->prepare('SELECT * FROM .. WHERE id = ?');
$sth->execute($id);
while (@row = $sth->fetchrow_array) {
  #И здесь обрабатываешь строчку из бд. Если так хочешь, можешь распихивать ее по своим массивам.
}


Но я предпочитаю вместо $sth->fetchrow_array использовать $sth->fetchrow_hashref
Так ты получишь ссылку на хеш, ключами которого будут поля таблицы, а значения - значения полей в строке wink.gif
Подняться вверх 
 
Сообщение #2
allexeym
Вставить ник
сообщение 18:07:2007, 07:34
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 3
Регистрация: 17:07:2007
Пользователь №: 11 880
Специализация: админ



Репутация: - 0 +


эт начало
Цитата
$dbh = DBI->connect ("dbi:mysql:database=$database_name;host=$host;port=$port", $user, $pass, {RaiseError=>0, PrintError=>1, AutoCommit=>1} );

if(!$dbh){
die "Error 0"
}

#======================= Make catalog (rating) (catalog.html) ===================
$sql_string = 'select Shop_ID,Shop_Name,Shop_SubDir,Div_ID,Aprove_Time from shop where Publish_St order by Aprove_Time desc';
$sth = $dbh->prepare ( $sql_string );
$sth->execute();

if($sth==0){
$error_message = $dbh->errmsg;
print STDERR "$error_message\n";
die "Error in select";
}


а после идёт то на чем я застопорился

я так понимаю , что вот эта строка @last_shop_id_arr=$sth->fetchcol(0) выбирает 0-й столбец

и как мне выбрать 0-й через DBI?

Код
while (@row = $sth->fetchrow_array) {
  #И здесь обрабатываешь строчку из бд. Если так хочешь, можешь распихивать ее по своим массивам.
}

я не понял)
с перлом знаком буквально 3 дня)
как мне написать эту замену huh.gif

Сообщение отредактировал allexeym - 18:07:2007, 07:36
Подняться вверх 
 
Сообщение #3
allexeym
Вставить ник
сообщение 18:07:2007, 12:09
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 3
Регистрация: 17:07:2007
Пользователь №: 11 880
Специализация: админ



Репутация: - 0 +


ну вот так да, работает

Цитата
while (@row = $sth->fetchrow_array){
print $row[0];
};

т.е. выводить то что надо
но без пробелов

вот такой вот кучей
2393241524412440244724452463247324722469246824652395240

а надо шоб было так

239 324 152 4412 44024 472 44524 6324 732 472 2469 2468 246 523 95 240

или оно пофиг?
или зависит от того что должен делать скриптик?

Сообщение отредактировал allexeym - 18:07:2007, 12:10
Подняться вверх 
 
Сообщение #4
Vovochka
Вставить ник
сообщение 18:07:2007, 22:32
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 198
Регистрация: 4:08:2006
Из: Vladivostok.pm
Пользователь №: 5 749
Специализация: Perl, Web



Репутация: - 4 +


Вывод зависит от тебя smile.gif Добавишь пробелы, будут пробелы smile.gif
Через DBI получить весь первый столбец:
Код
@first_col;
while (@row = $sth->fetchrow_array) {
  push @first_col, $row[0];
}

Так ты получишь масив, состоящий из всех первых элементов.

используя вывод: print "$row[0] "; ты получишь пробелы smile.gif
используя вывод: print "$row[0]\n"; ты получишь вывод с новой строки smile.gif

ВСЕ! Зависит от того, что должен делать скрипт. Точнее, пожалуйста.
Подняться вверх 
 
Сообщение #5


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 05:32
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net
настройки микрофона Адреса музыкальных магазинов. Музыкальный магазин. распайка наушников.