Re: POST a variable

From: Date: Fri, 23 Mar 2007 18:48:07 +0000
Subject: Re: POST a variable
References: 1 2 3 4 5 6  Groups: php.general 
Request: Send a blank email to php-general+get-251208@lists.php.net to get a copy of this message
Sorry, I was more tailoring my question to the syntax of my query. It wasn't displaying anything for my echo. I've changed it to this now: $get_max = "SELECT scope_identity()"; $max_result = mssql_query($get_max) or die(mssql_error()); $max_id = mssql_fetch_row($max_result); echo "$max_id"; But all my echo returns is "array" instead of the number. Below are brief explanations of the different _identity uses you have. SELECT *@@IDENTITY* Returns the last IDENTITY value produced on a connection, regardless of the table that produced the value, and regardless of the scope of the statement that produced the value. SELECT *IDENT_CURRENT(*'*tablename*'*)* This new function returns the last IDENTITY value produced in a table, regardless of the connection that created the value, and regardless of the scope of the statement that produced the value. SELECT *SCOPE_IDENTITY()* This new function returns the last IDENTITY value produced on a connection and by a statement in the same scope, regardless of the table that produced the value. On 3/23/07, Satyam <Satyam@satyam.com.ar> wrote:
I don't really know about the scope_identity() function, neither much about @@identity. I know that the names preceded by @@ are MSSQL internal variables and I think that is the one you are looking for, I just checked in the on-line MS documentation, but have no SQL server active at this moment, nor have I dealt with one for the last few years, though I did use auto-increment fields and I certainly was able to retrieve the last id, somehow. I might be wrong and there might be another function or variable that gives you the value, but it looks to me @@identity is the one you are looking for. There is no need in your code to do any while, if the SQL statement doesn't fail and triggers the die(), you can rest assured you'll get a record with a single field, even if it only contains a null, that's the way with variables, you can't fail on them, though they might return null. Satyam ----- Original Message ----- *From:* Dan Shirah <mrsquash2@gmail.com> *To:* Satyam <Satyam@satyam.com.ar> *Sent:* Friday, March 23, 2007 7:14 PM *Subject:* Re: [PHP] POST a variable Satyam, I'm trying to retrieve the id using the identity method, but I do not get anything returned. Do you see anything wrong with this code? $get_max = "SELECT scope_identity()"; $max_result = mssql_query($get_max) or die(mssql_error()); while($max=mssql_fetch_row($max_result)){
    }
    $max_id = $max[0];
echo "$max_id"; On 3/23/07, Satyam <Satyam@satyam.com.ar> wrote: Do a 'select @@identity', it will give you the last record id. The gap in between steps 3 and 4, brief as it may seem, is enough to get you in trouble. Satyam ----- Original Message ----- From: "Dan Shirah" <mrsquash2@gmail.com> To: "Németh Zoltán" < znemeth@alterationx.hu> Cc: "php-general" <php-general@lists.php.net> Sent: Friday, March 23, 2007 4:07 PM Subject: Re: [PHP] POST a variable The reason I have to use it as I posted is because I am using Microsoft SQL server instead of MySQL. And I haven't found a php function for MSSQL that works the same as mysql_insert_id() So, to come out with a comparable function with pretty reliable results, I follow this process: 1. User enters data into form 2. User submits form 3. Save page inserts info into the database 4. Directly after the insert statement is my SELECT MAX query 5. I assign the retrieved value to a hidden field 6. I pass this value to the next form I figure the odds of another record being inserted inbetween the time it takes to go from step 3 to step 4 are very, very minimal. We're talking about MAYBE a 2-3 millisecond gap? On 3/23/07, Németh Zoltán <znemeth@alterationx.hu> wrote:
2007. 03. 23, péntek keltezéssel 10.45-kor Dan Shirah ezt írta:
Okay, I feel like the correct answer to this is about 2mm back in my
grey
matter. 1. I have a query that pulls the last row number when a newly
inserted
record is added: $maximum="SELECT MAX(payment_id) FROM payment_request"; $max_result=mssql_query($maximum); while($max=mssql_fetch_row($max_result)){ } $max_id = $max[0]; 2. I have multiple selections for the user to pick, but regardless
of
what
they choose I want the $max_id variable to be passed to the next
page.
3. Would I go about this by assigning $max_id to a hidden field
like
below?
<input type="hidden" value="<?php echo "$max_id"; ?>" size="5" maxlength="10" name="max_id" /> 4. And then to retrieve this value on my next page just get it out
of
$_POST['max_id'] ?? Does that all sound correct?
basically yes but if you want the id of the row you just inserted, using mysql_insert_id() is better because if another insert is happening at the same time, select max() may give you incorrect result greets Zoltán Németh
-------------------------------------------------------------------------------- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.17/730 - Release Date: 22/03/2007 7:44 ------------------------------ No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.17/730 - Release Date: 22/03/2007 7:44


« previous php.general (#251208) next »