gibs bei MS SQL ein Äquivalent zu mysql_insert_id() ?
Brauch dringend diese Funktionalität, aber bei php.net finde ich nichts.
Irgendjemand eine Idee, wie ich sowas hinbekomme (natürlich auch noch effizient

)
aus meiner MySQL Klasse, die gerade nach MS SQL portiert wird:
PHP:--------------------------------------------------------------------------------
// ...
function execute($query){
if($this->timer)
$this->Starttime();
$this->queryid = mssql_query($this->query = $query, $this->linkid);
if($this->timer){
$this->Endtime();
if($this->explain)
$this->get_debug($query);
}
if(!$this->queryid)
$this->echo_error();
}
// ...
function insert($query){
$this->execute($query);
// return $this->insertid = mysql_insert_id($this->linkid);
// WAS MUß HIER HIN ?
}
--------------------------------------------------------------------------------
alle anderen Funktionen laufen bereits auf MS SQL
ich brauch diese insert_id, weil in den Scripten dann sehr oft ein
PHP:--------------------------------------------------------------------------------
if( $newid = $query->insert("insert into ..."

) {
// Weiterverabeitung der neuen ID
}
--------------------------------------------------------------------------------
gemacht wird
Klicken Sie hier um den orginal Thread zu lesenMoRtAlAn
mh... nein, gibt es nicht. du mußt den Datensatz erneut auslesen um an die ID zu kommen.
gruss
Klicken Sie hier um den orginal Thread zu lesenTBT
Kann man da irgendwas mit stored procedures machen ?
Ansonsten bräuchte ich wohl einen regulären Ausdruck,
um aus der insert Abfrage eine select Abfrage zu basteln. HILFE
Klicken Sie hier um den orginal Thread zu lesenMoRtAlAn
regex ?? du weißt doch, was du einträgst, das sollte doch zu finden sein, oder ??
mit storedProcedures dürfte es aber auch nicht gehen, habs allerdings noch nich probiert :dontknow:
gruss
Klicken Sie hier um den orginal Thread zu lesenTBT
ich weiß eben nicht was eingetragen wird,
da die query als Parameter übergeben wird,
und in meinen Projekten zig Inserts gemacht werden.
habe jetzt so ein Konstrukt gefunden (google sei dank)
muß ich aber erst heute abend / morgen zu Hause testen
PHP:--------------------------------------------------------------------------------
function insert($query){
$this->execute("exec(\"".$query." SELECT @@IDENTITY as fileId\"

"

;
list($fileId) = mssql_fetch_row($this->queryid);
return $fileId;
}
--------------------------------------------------------------------------------
Klicken Sie hier um den orginal Thread zu lesenMoRtAlAn
wenns funktioniert, kannst du mir dann mal bescheid sagen ?? bzw. nach was hast du gesucht/ hast du den link zu dem Codesnipplet ??
gruss
Klicken Sie hier um den orginal Thread zu lesenTBT
Ich habe gesucht nach
"MSSQL mssql_insert_id"
obwohl es das ja garnicht gibt
der Codeschnipsel dazu lag bei
www.php.net in den Comments rum
Klicken Sie hier um den orginal Thread zu lesenTBT
hier gibs den Codeschnipsel
quote:
--------------------------------------------------------------------------------
While trying to return a @@IDENTITY after an INSERT statement, the only way I could get a valid return result was to encapsulate the query within an EXEC like so:
$result = mssql_query("
exec(\"
INSERT INTO Files
(ownerId, name, sizeKB, path)
VALUES ('$contactId', '$userfile_name', '$filesize', '$path')
SELECT @@IDENTITY as fileId\"

"

;
list($fileId) = mssql_fetch_row($result);
This returned the appropriate @@IDENTITY in a valid result set. Not sure if mssql supports multiple inline commands or not. But that assumption would back the useage of the EXEC command in order to execute these properly.