[MySQL 4.1] Datensatz Dublizieren

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

  • [MySQL 4.1] Datensatz Dublizieren

    Hi,

    gibt es eine Möglichkeit einen Datensatz zu Kopieren ohne alle Splatennamen aufzuführen:

    Ich habe mir etwas in der Richtung vorgestellt:

    INSERT INTO ´TBL´ ( SELECT * FROM ´TBL´ WHERE PK = 1 )


    Jedoch mit neuem Autowert den ich mittels last_insert_id abfragen kann.


    Danke basti

  • #2
    falls jemand Interesse an meiner Lösung oder einen Konstruktiven Verbesserungsvorschlag dazu hat:

    PHP-Code:
      /**
       * Dubliziert einen Datensatz in einer Tabelle
       *
       * @param $tbl Name der Tabelle in der gearbeitet werden soll
       * @param $pk Wert des Primärschlüssels des zu dublizierenden Datensatzes
       * @return Wert des Primärschüssels des Dublikats
       *
       **/
      
    function dublicate_record($tbl$pk){
        
    // Primärschüssel suchen
        
    $this->query("SHOW COLUMNS FROM $tbl WHERE `Key`='PRI'");
        
    // Ein Primärschüssel mit auto_increment ?
        
    if($this->count() == && $this->fetch_field('Extra') == 'auto_increment'){
          
    // Feldliste erstellen
          
    $primary_field $this->fetch_field('Field');
          
    $this->query("SHOW COLUMNS FROM $tbl");
          
    $fields    '';
          
    $seperator '';
          while(
    $field $this->fetch()){
            if(
    $field['Key'] != 'PRI'){
              
    $fields.=$seperator "`$field[Field]`";
              
    $seperator ', ';
            }
          }
          
    // Datensatz Dublizieren
          
    $this->query("INSERT INTO $tbl  ($fields) (SELECT $fields FROM $tbl WHERE $primary_field = '$pk')");
          return 
    $this->last_insert_id();
        }else{
          return 
    false;
        }
      } 
    Ich habe die Lösung als Methode in meiner MySQL-Klasse implementiert, aber ich denke die verwendeten Methoden sind verständlich

    Kommentar

    Lädt...
    X