1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

ID des eingefügten Datensatzes ermitteln (PDO)

Dieses Thema im Forum "SQLite" wurde erstellt von jan99, 12 Juli 2019 um 12:11 Uhr.

  1. jan99

    jan99 Benutzer

    Moin!

    ich möchte nachdem ich einen Datensatz in einer Tabelle mittels PDO angelegt habe weitere Tabellen befüllen. Für die Verknüpfung muss ich dann dort wiederum die ID des zuvor erstellten Datensatzes wissen.

    Mache ich das über den größten Zahlenwert, was Probleme geben kann wenn zwei kurz hintereinander aktiv waren, oder gibt es unter PDO andere Wege?

    Gruß Jan
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Datenbanken stellen für sowas Funktionen bereit, die die letzte vergebene ID in der aktuellen Session liefern. In sqlite scheint dies last_insert_rowid() zu sein.
     
  3. akretschmer

    akretschmer Datenbank-Guru

  4. jan99

    jan99 Benutzer

    Moin!
    so, nun wollte ich loslegen und habe mir das auch angeschaut. Ich bekomme aber immer wieder die Meldung:

    Fatal error: Call to undefined method PDOStatement::last_insert_rowid() in C:\PHProject\EBL_SoftwareInventar\ebl_class_crud.php on line 2035

    Mein Code sieht wie folgt aus und hat auch seinen Job gemacht:

    public function PDO_Create(){
    $PDO_statement = "INSERT INTO ".$this->tabelle." (";
    $variables ="";
    $variables_seperator ="";
    $values = "";

    foreach ($this->cdata as $key => $value) {
    if ($key != 'id'){
    $variables .= $variables_seperator."'".$key."'";
    if(substr($key,0,3)=="IS_" || substr($key,0,3)=="ID_"){// hier sollten Zahlen übergeben werden
    $values .= $variables_seperator.":".$key;
    } else { // hier werden Zeichenketten übergeben
    $values .= $variables_seperator.":".$key;
    }//endif

    $variables_seperator=", ";
    }//endif
    }//end-foreach

    $PDO_statement .= $variables.") VALUES (".$values.")";

    echo "PDO_statement:= ".$PDO_statement."<br>";

    $create = $this->db->prepare($PDO_statement);

    foreach ($this->controls as $control)
    {
    $befehl = ":".$control["column"];
    // echo "bind:= ".$befehl."<br>\n";
    // echo "cdata:= ".$this->cdata[$control["column"]]."<br>\n";
    $create->bindValue(":".$control["column"], $this->cdata[$control["column"]]);
    }//end-foreach

    try {
    $create->execute();

    // Abfrage der LastID bei den Tabellen Rechner bzw. Mitarbeiter um andere Tabellen nachzuführen.

    $this->last_insert_rowid = $create->last_insert_rowid(); // das ist Zeile 2035

    Kann mir einer von Euch weiterhelfen??

    Gruß Jan

     
  5. Walter

    Walter Administrator Mitarbeiter

    Bin kein PHP-Experte und das ist auch kein PHP-Forum aber Du bekommst die letzte id in der Regel vom PDO-Objekt.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden