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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Ещё вопрос по DBI::mysql 19.04.05 10:06  Число просмотров: 1883
Автор: 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'ом :-(
<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-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach