Thread: Transactions in Postgres
HI, I am running Postgresql-7.2 with PHP 4.1.1 and I am beginning to use transactions inside of a php script: $Link = pg_connect("host=$Host dbname=$DBName user=$User") or die ("Couldn't connect to the database $DBName"); $Query = "BEGIN WORK; INSERT into $TableName (firstname,lastname,emailaddress,comments,created) values('$Array[FirstName]', '$Array[LastName]','$Array[email]','$Array[Comments]', 'now()'); COMMIT;"; // Test to see if the query was succeful or not pg_exec($Link, $Query) or die ("Couldn't insert name $firstname"); if (pg_exec($Link,$Query)) { echo "<h1>Insert was successful</h1>"; } else { echo "<H1>Insert was not successful</H1>"; What I am finding is that this query will insert a new name twice in the database within milliseconds of each other. What am I missing in doing this? Any help is appreciated. Trevor
hi you do exactly twice the execution of the sql command (pg_exec) --- root <trevor@hailix.com> wrote: > HI, > > I am running Postgresql-7.2 with PHP 4.1.1 and I am > beginning to use > transactions inside of a php script: > > $Link = pg_connect("host=$Host dbname=$DBName > user=$User") or die > ("Couldn't connect to the database $DBName"); > > $Query = "BEGIN WORK; INSERT into $TableName > (firstname,lastname,emailaddress,comments,created) > values('$Array[FirstName]', > '$Array[LastName]','$Array[email]','$Array[Comments]', > 'now()'); > COMMIT;"; > > // Test to see if the query was succeful or not > > pg_exec($Link, $Query) or die ("Couldn't insert > name $firstname"); > > if (pg_exec($Link,$Query)) { > echo "<h1>Insert was successful</h1>"; > } else { > echo "<H1>Insert was not successful</H1>"; > > What I am finding is that this query will insert a > new name twice in the > database within milliseconds of each other. What am > I missing in doing > this? Any help is appreciated. > > Trevor > > > ---------------------------(end of > broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please > send an appropriate > subscribe-nomail command to majordomo@postgresql.org > so that your > message can get through to the mailing list cleanly ===== Best Regards, Ivan Horvath Anyone who has never made a mistake has never tried anything new. /Albert Einstein/ __________________________________________________ Do You Yahoo!? Yahoo! Tax Center - online filing with TurboTax http://taxes.yahoo.com/
Trevor, > I am running Postgresql-7.2 with PHP 4.1.1 and I am beginning to use > transactions inside of a php script: This issue has been raised and resolved on the pgsql-php list. Browse the archives of that list, and if you can't find it, post your question to pgsql-php. FWIW, transactions within postgres must happen in a single connection. -Josh Berkus
You are running pg_exec twice, so you should get two inserts. Try: $result = pg_exec(.... if($result)... HTH, Troy --- root <trevor@hailix.com> wrote: > HI, > > I am running Postgresql-7.2 with PHP 4.1.1 and I am > beginning to use > transactions inside of a php script: > > $Link = pg_connect("host=$Host dbname=$DBName > user=$User") or die > ("Couldn't connect to the database $DBName"); > > $Query = "BEGIN WORK; INSERT into $TableName > (firstname,lastname,emailaddress,comments,created) > values('$Array[FirstName]', > '$Array[LastName]','$Array[email]','$Array[Comments]', > 'now()'); > COMMIT;"; > > // Test to see if the query was succeful or not > > pg_exec($Link, $Query) or die ("Couldn't insert > name $firstname"); > > if (pg_exec($Link,$Query)) { > echo "<h1>Insert was successful</h1>"; > } else { > echo "<H1>Insert was not successful</H1>"; > > What I am finding is that this query will insert a > new name twice in the > database within milliseconds of each other. What am > I missing in doing > this? Any help is appreciated. > > Trevor > > > ---------------------------(end of > broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please > send an appropriate > subscribe-nomail command to majordomo@postgresql.org > so that your > message can get through to the mailing list cleanly ______________________________________________________________________ Music, Movies, Sports, Games! http://entertainment.yahoo.ca