информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Блокировка российских аккаунтов... 
 Отзыв сертификатов ЦБ РФ, ПСБ,... 
 Памятка мирным людям во время информационной... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
могу только показать как я делаю, т.к. в перле не силён(и в... 19.04.05 10:59  Число просмотров: 1542
Автор: Winer <Виктор С.> Статус: Member
<"чистая" ссылка>
могу только показать как я делаю, т.к. в перле не силён(и в DBI тоже)
$query="SELECT MAX(DATE_FORMAT(date_add,'%Y%m%d000000')) AS max_date FROM hourly";
$rs=$dbh->prepare($query);
$rs->execute;
$max_date=$rs->fetchrow_hashref;
$max_date=$max_date->{max_date};
$rs->finish;

вообще удобно запрос записывать в отдельную переменную(а-ля $query='bla-bla-bla'), его потом можно вывести и посмотреть, действительно ли он такой, как ожидалось.
<beginners>
[lame, DBI] Не могу разобраться с mysql 19.04.05 03:33  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Только вот начал изучать мускул, пару дней как, а заставить работать его с DBI не получается. Вот код, взятый откуда-то (ссылку потерял):

use DBI;

my $dsn='DBI:mysql:test:localhost';
my $db_user_name='root';
my $db_password='qwerty';
my ($id,$password);
my $dbh=DBI->connect($dsn,$db_user_name,$db_password);

'test' - это существующая база (создавалась отдельно через консоль как 'create database test;'). В общем на этот код я получаю сообщение: "DBI connect('test:localhost','root',...) failed: Can't connect to MySQL server on 'localhost' (10061) at base.pl line 7".

Возможно, я не так установил DBI? Устанавливал с помощью PPM два модуля: сам DBI и DBD-mysql (везде последние версии). Больше для установки ничего не делал. Операционка WinXP.

MySQL настраивал через Instance Config Wizard; настройки: Developer Machine, Multifunctional Database, Decision Support (DSS)/OLAP, Disable TCP/IP Networking, Character set cp1251, пароль для рута выставлялся там же, ставил отдельно галку 'Root may only connect from localhost'. Больше ничего не трогал.

Ссори за ламерство - первый опыт с базами в принципе. Даже Access'а в глаза до этого не видел :-)
Ещё вопрос по DBI::mysql 19.04.05 10:06  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Пример взят полностью из статьи на mysql.ru:

use DBI;

my $dsn='DBI:mysql:test:localhost';
my $db_user_name='root';
my $db_password='qwerty';
my ($id,$password);
my $dbh=DBI->connect($dsn,$db_user_name,$db_password);

$input_nickname='Cowlick';
$input_password='udder';

my $sth = $dbh->prepare(qq{select id, password from users where nickname = '$input_nickname'});
$sth->execute();

($id, $password) = $sth->fetchrow_array();

print join ", ", keys(%{$sth});

$sth->finish();
if ($input_password eq $password)
{
print "OK!";
}

Почему-то не работает. Пользователь Cowlick точно есть в таблице - при точно такой же команде в консоле, которую я указываю в prepare нормально выводится id и password, а вот в результате я ничего не получаю: fetchrow_array возвращает пустой список, хотя я сверялся с мануалом по DBI - там даны совершенно аналогичные примеры.

Пытался сам разобраться в ситуации - в $sth лежит "DBI::st=HASH(адрес)". Пробовал такую конструкцию: keys(%{$sth}) - возвращает пустой список. Не знаю что это значит и должно ли по тому адресу быть хоть что-то - в код DBI не вникал. prepare по идее работает нормально, т. к. если указать ошибочный запрос, выводится предупреждение. Видимо, либо execute не захватывает ответ сервера, либо я не так fetchrow_array применяю. В общем, совсем я запустался. Тяжко быть beginners'ом :-(
могу только показать как я делаю, т.к. в перле не силён(и в... 19.04.05 10:59  
Автор: Winer <Виктор С.> Статус: Member
<"чистая" ссылка>
могу только показать как я делаю, т.к. в перле не силён(и в DBI тоже)
$query="SELECT MAX(DATE_FORMAT(date_add,'%Y%m%d000000')) AS max_date FROM hourly";
$rs=$dbh->prepare($query);
$rs->execute;
$max_date=$rs->fetchrow_hashref;
$max_date=$max_date->{max_date};
$rs->finish;

вообще удобно запрос записывать в отдельную переменную(а-ля $query='bla-bla-bla'), его потом можно вывести и посмотреть, действительно ли он такой, как ожидалось.
Чего-то не получается 20.04.05 00:16  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> могу только показать как я делаю, т.к. в перле не силён(и в
> DBI тоже)
> $query="SELECT MAX(DATE_FORMAT(date_add,'%Y%m%d000000')) AS
Такой строчки пока не понимаю :-) Только начинаю изучать мускул и пока не в нём не силён - пытаюсь заставить его заработать хотя бы на простом примере.
По аналогии с приведённым кодом пытался заменить fetchrow_array на fetchrow_hashref - никакого эффекта. А можете скинуть рабочий пример с DBI но только на более простую базу? А то я пока в мускуловских конструкциях не сильно секу. А писал я так:

use DBI;

my $dsn='DBI:mysql:test:localhost';
my $db_user_name='root';
my $db_password='qwerty';
my $dbh=DBI->connect($dsn,$db_user_name,$db_password);

$input_nickname='Cowlick';

$query="select id,password from users where nickname='$input_nickname'";
$rs=$dbh->prepare($query);
$rs->execute;
print $rs->fetchrow_hashref;
$rs->finish;
тогда надо отлаживать :) 20.04.05 08:22  
Автор: Winer <Виктор С.> Статус: Member
<"чистая" ссылка>
тогда надо отлаживать :)
во-первых, запрос сначала записывать в переменную, потом выводить на экран,только потом подставлять в prepare.
во-вторых, начать с более простых запросов, а-ля 'SELECT * FROM table_name'
в-третьих, qq{string}, если я не ошибаюсь, прослэшит все кавычки в запросе, а не только в переменной( where field_name=\'value\'), так ???
Заработало :) 21.04.05 01:42  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
В чем была ошибка - так и не понял. Вроде сейчас делаю всё точно так же и всё работает. То ли глюки может быть какие-то были единичные и спасла перезагрузка (хотя врят ли), то ли я просто не к тем столбцам обращался по невнимательности - чёрт его знает.

Насчёт qq{...} - это обыкновенные псевдокавычки. Работают в полной аналогии с "..." с единственным исключением отличием - не нужно бэкслешить сами кавычки. То есть можно написать qq{Hello "Windows"} и это будет нормально работать. В противном случае мы бы писали "Hello \"Windows\"". Правда, теперь требуется слэшить "}". Больше никаких телодвижений qq не производит.
угу, замечательная идея, отключить возможность коннекта к... 19.04.05 08:25  
Автор: Winer <Виктор С.> Статус: Member
<"чистая" ссылка>
> Disable TCP/IP Networking
угу, замечательная идея, отключить возможность коннекта к базе по tcp/ip и пытаться по нему же законнектиться.
:-) Заработало, спасибо. Хых, я почему-то не думал, что используется TCP/IP. У меня была уверенность, что там IPC применяется. 19.04.05 08:44  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach