как узнать id после INSERT в php
Добавлено: 05 сен 2007, 11:59
Вопрос в том как ме узнать id после INSERT используя PHP
Форум по InterBase, Firebird и Yaffil
http://www.ibaseforum.ru/
Код: Выделить всё
//$name_gen - имя генератора
//$num_gen - какое число прибавить к значению
//$srv - соед к БД
function ibase_gen_id($name_gen,$num_gen,$srv) {
$sql = "select gen_id($name_gen, $num_gen) from rdb\$database";
$f=ibase_query($srv,$sql);
$r=ibase_fetch_row($f);
return $r[0];
}я тож думал о подобном, но через MAX(ID).Sparton писал(а):У меня начала работать на PHP 5, для 4 писал функцию
Код: Выделить всё
//$name_gen - имя генератора //$num_gen - какое число прибавить к значению //$srv - соед к БД function ibase_gen_id($name_gen,$num_gen,$srv) { $sql = "select gen_id($name_gen, $num_gen) from rdb\$database"; $f=ibase_query($srv,$sql); $r=ibase_fetch_row($f); return $r[0]; }
читать www.ibase.ru/devinfo/generator.htm , срочно.я тож думал о подобном, но через MAX(ID).
см. выше.Если я ошибаюсь то поправте меня! но мне кажитьсяя что в данном примере есть шанс что ID ($r) займет другая запись? или тут тоже будет держать в резерве ID на данную сессию?
Как уже сказали, обычно id узнают до INSERT. Но если приспичило именно после, то RETURNING тебе в руки.UserAleks писал(а):Вопрос в том как ме узнать id после INSERT используя PHP
Спасибо статейка отличная:!:kdv писал(а):читать www.ibase.ru/devinfo/generator.htm , срочно.я тож думал о подобном, но через MAX(ID).
см. выше.Если я ошибаюсь то поправте меня! но мне кажитьсяя что в данном примере есть шанс что ID ($r) займет другая запись? или тут тоже будет держать в резерве ID на данную сессию?
ябы селектом забабахал все дело, но это если с перезагрузкой страницы, а если нет то парился и Яваскриптом извращялся используя масивыAttid писал(а):а ты много на пхп+птах работаешь?Sparton писал(а):
интересует следущее я получаю SQL запрос перед самым показом пользователю (беру из БД), соответственно получаю результат и отдаю юзверу, но потом он хочет его немного посортировать вот что делать дальше еще не придумал =)
есть 3 варианта (результат всегда в пределе 100 строк)
1, парсить запрос и добавлять\менять order by
(минус много запросов с юнионами)
2, запрос брать в подзапрос
(лишние насилование птички)
3, первый результат закешировать и работать только с ним, пусть апачь трудится
(не предстовляю как это сделать)
Есть опыт\предложения ?
пример можешь нарисать ?Sparton писал(а):А что если результат запроса в массив, а массив в сессию? Дальнейшей то обработке будет только полученный результат подвергаться..
Attid писал(а):пример можешь нарисать ?
Код: Выделить всё
$query="select id, name from TBL where id>0";
$sth=ibase_query($DB, $query);
$k=0;
while($row=ibase_fetch_assoc($sth)){
$_SESSION['sql'][$k]= $row;
$k++;
}