аналог mysql_insert_id() в пакте DB

Art

Guest
аналог mysql_insert_id() в пакте DB

Господа, есть что-то адеквтаное mysql_insert_id() в DB?
Сколько не копал документацию - не могу найти...
Как выйти из положения?

-~{}~ 23.07.05 13:46:

может nextID()?

т.е. через nextID() я выясняю или даже создаю запись, а потом уже ориентируюсь? как не по sqlьному :), буду признателен за экспертное мнение...
 

Art

Guest
Автор оригинала: Romantik
Я так понимаю тебе нужно сиквенсы
http://pear.php.net/manual/en/package.database.db.db-common.nextid.php
В общем-то да - нужно это, токльо вот не получается...
На моем уровне задач звучит так:"Вернуть id последнего инсерта, что в мускуле делалось с помошью mysql_insert_id()"

nextID это некое обобщение и не моргу понять - начиная с певрого вызова он прет на +1 и все цифры никак не связаны с реальными данными в таблице...

Продолжаем разбираться, но надеемся и на помошь... :)

-~{}~ 23.07.05 15:01:

Ага, ну это уже что-то:
http://pear.php.net/bugs/bug.php?id=1343

-~{}~ 23.07.05 15:10:

Фактичсеки алгоритм такой:
использовать nextid - который вернет нужный ID, правда помнит он больше чем есть в базе...
auto_increment получаеться вообще не нужен, его не поюзать...
 

Art

Guest
Фрол, искрений поклон тебе!
Мы начали к этому подбираться копаясь в PEAR/DB/mysql.php
Почему-же об этом ни слова в документации????
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Art
Почему-же об этом ни слова в документации????
Потому что этот подход неправильный, правильный --- использовать последовательности.
 

Art

Guest
Автор оригинала: Sad Spirit
Потому что этот подход неправильный, правильный --- использовать последовательности.
А как-же их использовать в даном конктретом, весьма актуальном случае?

Дополнительно,
в определении функции nextId для MySQL используется mysql_insert_id и казалось-бы это то, что нужно, но то, что возвращает нам nextID() никак не связано с таблицей...
Это совсем не понятно....
 

Romantik

TeaM PHPClub
$id= $db->nextId($part);
$sql= "INSERT INTO $part (id,name,stat) VALUES ('$id','$name',1)";
$res= $db->query($sql);
я это имел ввиду.
 

alpine

Новичок
Frol
IMHO Если следовать идеологии PEAR то нужно делать как сказал Romantik тем более что это в документации написано.
 

Frol

Новичок
alpine
1. как делать я не говорил.
2. не знаю как в других базах, но реализация nextId() в mysql -- ужасная.
 

alpine

Новичок
Frol
Ты имеешь ввиду интерфейс к mySQL в PEAR? :)
Ага, там создается для nextId() отдельная таблица в которой id автоинкрементный, но наверное разработчики о чем-то думали все таки ...
 

Art

Guest
Господа, в чем минус этого:
$id = $db->getOne('SELECT LAST_INSERT_ID()');
 

Art

Guest
автоинкримент - это что, тоже только у MySQL? :(
Да, минус конечно потрясающий...
 
Сверху