Re: Retrieve value of newly inserted row.
| From: | Dan Shirah | Date: | Thu, 15 Feb 2007 17:02:56 +0000 |
| Subject: | Re: Retrieve value of newly inserted row. | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-248918@lists.php.net to get a copy of this message | ||
I GOT IT! WooHoo!
Thanks to a co-worker, this problem has been solved! I was using
scope_identity incorrectly.
This is how you should use it:
INSERT INTO Table1 (
Column1,
Column2)
VALUES (
Value1,
Value2)
INSERT INTO Table2 (
Column1,
Column2)
VALUES (
scope_identity(),
Value2)
Using scope_identity() for the value in insert #2 will return the value of
the identity field just created from insert #1.
On 2/15/07, Brad Fuller <bfuller@cpacampaigns.com> wrote:
Okay, I found the correct function and below is what I have: - Show quoted text - $insert1 = "INSERT INTO table1 ( <snip> )VALUES (<snip> )SELECT scope_identity()INSERT INTO table2 ( credit_card_id, case_number, comments) VALUES ( 'scope_identity', '$case', '$comments')";echo "$insert1"; mssql_query($insert1) or die ("Query failed: <br />".mssql_get_last_message()); echo "Insert complete"; the scope_identity function is suppose to select the last inserted ID for the first insert statement. When my query executes, it "appears" to go thru all the steps correctly...it inserts the first record just fine, displays the echo of my query and returns the echo of "Insert Complete" HOWEVER, when I go to look at the data base there is NO data inserted into table2 even though my query returned that "Insert Complete" statement. Any ideas? On 2/14/07, Jim Lucas <lists@cmsws.com> wrote:Brad Fuller wrote:differentexplanationFrom looking on the web (MSDN) I found the @@identity and theMight look at this http://us3.php.net/manual/en/function.mssql-query.php#46026 -- Enjoy, Jim Lucas Different eyes see different things. Different hearts beat on$q = mssql_query("INSERT INTO TableName(...) VALUES(...) SELECT LAST_INSERT_ID=@@IDENTITY"); $r = mssql_fetch_assoc($q); HTH, Bradof what it is, but MS's "example" is horrible and does not show a good context for using this function. Could you elaborate more on its use?strings. But there are times for you and me when all such thingsagree.- RushI don't think you can do multiple inserts in a single query. Or maybe you can but the select statement after it causes the second insert not to be run? I don't know, but I've seen several examples - each use 2 separate insert queries. My reply to your original message was incomplete; I apologize $q1 = mssql_query("INSERT INTO Table1 (...) VALUES (...) SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]"); $r = mssql_fetch_assoc($q1); $insert_id = $r['SCOPE_IDENTITY']; $q2 = mssql_query("INSERT INTO Table2 (...) VALUES ({$insert_id}, ...)");