Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MS SQL: mssql_insert_id ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MS SQL: mssql_insert_id ?


 
TBT
04-11-2002, 15:59 
 
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:

// ...

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


if( $newid = $query->insert("insert into ...")) {
// Weiterverabeitung der neuen ID
}
gemacht wird

 
MoRtAlAn
04-11-2002, 16:36 
 
mh... nein, gibt es nicht. du mußt den Datensatz erneut auslesen um an die ID zu kommen.

gruss

 
TBT
05-11-2002, 08:52 
 
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 :confused:

 
MoRtAlAn
05-11-2002, 09:26 
 
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

 
TBT
05-11-2002, 10:42 
 
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


function insert($query){
$this->execute("exec(\"".$query." SELECT @@IDENTITY as fileId\")");
list($fileId) = mssql_fetch_row($this->queryid);
return $fileId;
}

 
MoRtAlAn
05-11-2002, 10:47 
 
wenns funktioniert, kannst du mir dann mal bescheid sagen ?? bzw. nach was hast du gesucht/ hast du den link zu dem Codesnipplet ??

gruss

 
TBT
05-11-2002, 11:09 
 
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

 
TBT
05-11-2002, 15:37 
 
hier (http://www.php.net/manual/en/function.mssql-query.php) gibs den Codeschnipsel

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.

 
MoRtAlAn
05-11-2002, 15:39 
 
:jo: THX

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:28 Uhr.