Forum Webscript.Ru

Программирование => Perl => Тема начата: Error202 от 19 Марта 2007, 15:04:18

Название: MySQL - засада...
Отправлено: Error202 от 19 Марта 2007, 15:04:18
Здрасте!

пишу так

  $sth = $dbh->prepare(qq{ SELECT name, author, dpi, wid, keywords, pfile, desk, model_release FROM dpi_pics_test WHERE id=\'$pid\' });
  $sth->execute();
   ($tname, $tauth, $tdpi, $twid, $tkeys, $tfile, $tdesk, $tmodel) = $sth->fetchrow_array();
  $sth->finish();

  $sth = $dbh->prepare(qq{
    insert into dpi_pics (id, name, author, dpi, wid, keywords, pfile, desk, act, model_release)
    values (\'$pid\', \'$tname\', \'$tauth\', \'$tdpi\', \'$twid\', \'$tkeys\', \'$tfile\', \'$tdesk\',\'2\',\'$tmodel\')     });
  $sth->execute(); $sth->finish();
 

По порядку:
Есть две таблицы с информацией о фото: dpi_pics_test и dpi_pics....

Хочу вытащить запись из одной и вставляю в другую...
Есть в них такое поле "author"...

В моем случае = 1... (в настройках бд имеет тип INT)

Все нормально копируется, но в ошибки выпадает следующее:

test.pl: DBD::mysql::st execute failed: Out of range value adjusted for column \'author\' at row 1 at c:\\www\\server\\cgi-bin\\admin\\test.pl line 57
 

Почему? Что тут не так?
Название: MySQL - засада...
Отправлено: Egorsha от 19 Марта 2007, 16:01:26
Может в кавычках проблема?
Название: MySQL - засада...
Отправлено: vladsu от 19 Марта 2007, 16:35:14
А если так:

my $values = join ",", map{$dbh->quote($_)} $pid, $tname, $tauth, $tdpi, $twid, $tkeys, $tfile, $tdesk,2,$tmodel;
                $dbh->do( "INSERT INTO dpi_pics ( id
                                                , name
                                                , author
                                                , dpi
                                                , wid
                                                , keywords
                                                , pfile
                                                , desk
                                                , act
                                                , model_release
                                                )
                                         VALUES ($values)"
                        );


И ещё, если происходит чтение из одной таб и сразу запись в другую, то зачем Вам столько бестолковых переменных?
Название: MySQL - засада...
Отправлено: Error202 от 19 Марта 2007, 16:44:55
Да проблема в том, что ведь все копируется в таблицу...
Причем правильно...

Непонятно...
Пойду на MySQL форуме задавать вопрос...
Название: MySQL - засада...
Отправлено: vladsu от 19 Марта 2007, 16:46:40
Проблема наверняка в кавычках.
Название: MySQL - засада...
Отправлено: xames от 24 Марта 2007, 11:02:10
map{"\'$dbh->quote($_)\'"}