insertid (DBI)

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

insertid (DBI)

Сообщение gcc »

нужно узнать прошлое или будущий id строки в таблице MySQL

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

my $re = $dbh->prepare("INSERT INTO users ( name, pass ) VALUES (?,?)") || die "w";

$re->execute($l,$p);


вставил - работает

]а как вставить команду чтобы узнать id ?

insertid
Если вы используете специфичную для MySQL функцию AUTO_INCREMENT, здесь будут сохраняться автоматически увеличенные значения. Пример:

$new_id = $sth->{insertid};

В качестве альтернативы можно использовать $dbh -> {'mysql_insertid'}


пробую вот так:

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

my $re = $dbh->prepare("INSERT INTO users ( name, pass ) VALUES (?,?)") || die "aw";

$re->execute($l,$p);
$new_id = $re->{insertid};


не работает! как узнать?



UPD:

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

  $sth = $dbh->prepare("SELECT LAST_INSERT_ID() AS users");
    $sth->execute();
     $ans = $sth->fetchrow_hashref();

print "$ans";


выводит вот это

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

HASH(0x84cbcc0)


не найду как сделать чтобы вывено нормально... (
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: insertid (DBI)

Сообщение gcc »

нашел

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

  $dbh = "DBI:mysql:$name_base_mysql:$host_base_mysql:$port_base_mysql";
  $dbh = DBI -> connect($dbh, $user_base_mysql, $pass_base_mysql);
  $dbh -> do("INSERT INTO image_table SET name = '$fdb[0]', gallery = '$fdb[1]', type_image = '$tv[0]' ");
  $tv[1] = $dbh->{'mysql_insertid'}; # Выберем последний id номер, он будет именем нашего файла
  $dbh -> disconnect();


http://phoinix.ucoz.ru/publ/3-1-0-14

сделал тоже самое запрос INSERT выполнился у меня

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

print "$tv[1]";


равняеться 0 :crazy:


UPD
надо было поставить вместо

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

     $insertid = $result->{"mysql_insertid"};

print "$insertid";
Спасибо сказали: