MS SQL: mssql_insert_id ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS SQL: mssql_insert_id ?

    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 Code:
    // ...

    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 Code:
    if( $newid $query->insert("insert into ...")) {
       
    // Weiterverabeitung der neuen ID

    gemacht wird
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    mh... nein, gibt es nicht. du mußt den Datensatz erneut auslesen um an die ID zu kommen.

    gruss

    Comment


    • #3
      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
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Comment


      • #4
        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

        gruss

        Comment


        • #5
          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 Code:
          function insert($query){
              
          $this->execute("exec(\"".$query." SELECT @@IDENTITY as fileId\")");
              list(
          $fileId) = mssql_fetch_row($this->queryid);
              return 
          $fileId;

          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Comment


          • #6
            wenns funktioniert, kannst du mir dann mal bescheid sagen ?? bzw. nach was hast du gesucht/ hast du den link zu dem Codesnipplet ??

            gruss

            Comment


            • #7
              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
              Last edited by TBT; 05-11-2002, 10:11.
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Comment


              • #8
                hier 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.
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Comment


                • #9
                  THX

                  Comment

                  Working...
                  X