MS SQL: mssql_insert_id ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

    Kommentar


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

      Kommentar


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

        Kommentar


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

          Kommentar


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

            gruss

            Kommentar


            • #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
              Zuletzt geändert von TBT; 05.11.2002, 11:11.
              TBT

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


              PHP 2 AllPatrizier II Browsergame

              Kommentar


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

                Kommentar


                • #9
                  THX

                  Kommentar

                  Lädt...
                  X