Forum Webscript.Ru
Программирование => Perl => Тема начата: DartSidius от 11 Декабря 2006, 18:38:42
-
таблица поле id auto_incriment
пытаюсь узнать id последнего добавленого элемента
my $query = $Mysql::dbh->prepare("SELECT LAST_INSERT_ID(id) FROM pages_mod");
$query->execute();
$id = $query->fetchrow_arrayref()->
$query->finish();
почему то всегда выдаёт id первого добавленого элемента
-
честно я еще не юзал это, просто по аналогии должно быть что то вроде такого
$dbh->last_insert_id()
#last_insert_id
# $rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
# $rv = $dbh->last_insert_id($catalog, $schema, $table, $field, \\%attr);
#Returns a value \'identifying\' the row just inserted, if possible. Typically
#this would be a value assigned by the database server to a column
#with an auto_increment or serial type. Returns undef if the driver
#does not support the method or can\'t determine the value.
и вместо dbh->prepare()
$query->execute();
здесь используется ->do()
-
print $dbh->selectrow_array("select id from table order by 1 desc limit 1");
-
ctax:
print $dbh->selectrow_array("select id from table order by 1 desc limit 1");
Может давать ошибку, База данных предполагает множество одновременных конектов и если паралельный коннект будет одновременно производить инсерт в эту таблицу. То есть вероятность того что запрос на селект может встать в очередь не сразу после своего инсерта, а за несколькими инсертами. Которые будут выполнятся по мере поступления FIFO или в другой последовательности LIFO в общем. есть вероятность в многопользовательской среде получить не свой айди