Страница 1 из 1

как узнать id после INSERT в php

Добавлено: 05 сен 2007, 11:59
UserAleks
Вопрос в том как ме узнать id после INSERT используя PHP

Re: как узнать id после INSERT в php

Добавлено: 05 сен 2007, 12:01
Sparton
Я делаю так:

сначала выполняю $id = ibase_gen_id();
потом при insert into tbl (ID, NAME) values ($id, $name)

Добавлено: 05 сен 2007, 12:35
UserAleks
Да я так пробовал но уменя ругаеться на ibase_gen_id - незнает такую функцию.
Это мне какую dll обновуть нужно? PHP вроде 4.3.10

Добавлено: 05 сен 2007, 12:50
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];
                        }

Добавлено: 05 сен 2007, 14:57
UserAleks
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];
                        }
я тож думал о подобном, но через MAX(ID).
но вот вся проблема в том что например MySQL есть функция(точно не помню) которая находит наивысший ID и +1 и держит его пока не добавиться запись(если соединение не закрыто) и под этим номером другой конект не запишит в таблицу;
Если я ошибаюсь то поправте меня! но мне кажитьсяя что в данном примере есть шанс что ID ($r) займет другая запись? или тут тоже будет держать в резерве ID на данную сессию?
Блин я даже думал в все это дело в масив запихать и пусть пытеться пока не запихает.

Добавлено: 05 сен 2007, 14:59
kdv
я тож думал о подобном, но через MAX(ID).
читать www.ibase.ru/devinfo/generator.htm , срочно.
Если я ошибаюсь то поправте меня! но мне кажитьсяя что в данном примере есть шанс что ID ($r) займет другая запись? или тут тоже будет держать в резерве ID на данную сессию?
см. выше.

сортировка

Добавлено: 05 сен 2007, 15:57
Attid
[quote="Sparton"][/quote]

а ты много на пхп+птах работаешь?

интересует следущее я получаю SQL запрос перед самым показом пользователю (беру из БД), соответственно получаю результат и отдаю юзверу, но потом он хочет его немного посортировать вот что делать дальше еще не придумал =)
есть 3 варианта (результат всегда в пределе 100 строк)
1, парсить запрос и добавлять\менять order by
(минус много запросов с юнионами)
2, запрос брать в подзапрос
(лишние насилование птички)
3, первый результат закешировать и работать только с ним, пусть апачь трудится
(не предстовляю как это сделать)


Есть опыт\предложения ?

Re: сортировка

Добавлено: 05 сен 2007, 16:32
Sparton
Ну я обычно просто запрос перестраивал и опять в БД его. А что если результат запроса в массив, а массив в сессию? Дальнейшей то обработке будет только полученный результат подвергаться..

Re: как узнать id после INSERT в php

Добавлено: 06 сен 2007, 08:10
Dimitry Sibiryakov
UserAleks писал(а):Вопрос в том как ме узнать id после INSERT используя PHP
Как уже сказали, обычно id узнают до INSERT. Но если приспичило именно после, то RETURNING тебе в руки.

Добавлено: 06 сен 2007, 12:32
UserAleks
kdv писал(а):
я тож думал о подобном, но через MAX(ID).
читать www.ibase.ru/devinfo/generator.htm , срочно.
Если я ошибаюсь то поправте меня! но мне кажитьсяя что в данном примере есть шанс что ID ($r) займет другая запись? или тут тоже будет держать в резерве ID на данную сессию?
см. выше.
Спасибо статейка отличная:!:

Re: сортировка

Добавлено: 06 сен 2007, 12:36
UserAleks
Attid писал(а):
Sparton писал(а):
а ты много на пхп+птах работаешь?

интересует следущее я получаю SQL запрос перед самым показом пользователю (беру из БД), соответственно получаю результат и отдаю юзверу, но потом он хочет его немного посортировать вот что делать дальше еще не придумал =)
есть 3 варианта (результат всегда в пределе 100 строк)
1, парсить запрос и добавлять\менять order by
(минус много запросов с юнионами)
2, запрос брать в подзапрос
(лишние насилование птички)
3, первый результат закешировать и работать только с ним, пусть апачь трудится
(не предстовляю как это сделать)


Есть опыт\предложения ?
ябы селектом забабахал все дело, но это если с перезагрузкой страницы, а если нет то парился и Яваскриптом извращялся используя масивы

Re: сортировка

Добавлено: 07 сен 2007, 13:42
Attid
Sparton писал(а):А что если результат запроса в массив, а массив в сессию? Дальнейшей то обработке будет только полученный результат подвергаться..
пример можешь нарисать ?

Re: сортировка

Добавлено: 10 сен 2007, 23:22
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++;
}
вот так.