ITPUB??ì3
ITPUB论坛 » WEB程序开发 » how to realize mysql_insert_id in php

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: [转载] how to realize mysql_insert_id in php
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2008-1-8 16:17 
how to realize mysql_insert_id in php

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.


只看该作者    顶部
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2008-1-14 17:09 
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);


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问