Re: getting serial in PHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



kevin myers wrote:
well right after you insert it you can pull it right back out again, or i think you can do :
$query = "insert into logs values
((nextval('public.logs_log_id_seq'::text) as $log_id),$id,'$logtext','now','$_SERVER[PHP_AUTH_USER]');";
and then use it that way, or maybe you can do this:
$log_id = nextval('public.logs_log_id_seq'::text);
and then insert it that way


From: "Roger 'Rocky' Vetterberg" <listsub@401.cx>
To: php-db@lists.php.net
Subject:  getting serial in PHP
Date: Fri, 28 Mar 2003 13:46:36 +0100

Hi list.

I have no real education in PHP or postgre, so forgive me if I dont use the correct language or expressions.
I have a small problem that is probably easily solved if you just know how to do it.


I have a PHP interface over a postgreSQL database, where I can search, add, delete or modify records.
Now, when adding a new record, a query could look something like this:
$query = "insert into logs values (nextval('public.logs_log_id_seq'::text),$id,'$logtext','now','$_SERVER[PHP_AUTH_USER]');";



The first value, the "nextval" thingie (if someone could give me the correct term for such a feature I would appriciate it) gives the added row a unique serial number. How do I figure out the serial my newly added row was assigned?
What I want to do is something like
'echo "Your submission was accepted and assigned log ID $log_id"; '
directly below the $query line. How do I get the correct value into $log_id?


Hopefully, someone understands my confused rantings and can give me directions to some documentation or maybe even the name of a variable I can use. :)

TIA

--
R

I just cant figure this out.
Another user directed me to http://www.php.net/manual/en/function.pg-last-oid.php, which gave me a few pointers.
If I understand it correctly, something like this should work:


if (empty($id)) {
die("No id specified, can not continue");
}
else {
$query = "insert into logs values (nextval('public.logs_log_id_seq'::text),$id,'$logtext','now','$_SERVER[PHP_AUTH_USER]')";
}
if($result = pg_exec($connection, $query)) {
echo "oid : " .pg_last_oid($result);
}


However, it doesnt work. The data is added with a correct serial, but it still prints just "oid: "

About the second suggestion, just pulling the data back out; I could do that, but the only thing that is unique in the string is the timestamp. Theoretically, on a busy site even that could be identical in two rows. (Since timestamp is in one millionth of a second, its not very likely but could happen)
So if I do a search on the data I just inserted, I could get two or more hits, and there would be no way for me to tell which one is the one Im after.


Im new to both php and sql, but I keep thinking things like this must be done every day on thousands of sites. I just cant figure out how to do it, any suggestions?

TIA
--
R


-- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux