Aktueller Standort: Startseite> Neueste Artikel> Wie erhalte ich die ID des zuletzt eingefügten Datensatzes über mySQLI_STMT :: $ Insert_id und führe nachfolgende Abfragebetriebe durch?

Wie erhalte ich die ID des zuletzt eingefügten Datensatzes über mySQLI_STMT :: $ Insert_id und führe nachfolgende Abfragebetriebe durch?

gitbox 2025-08-04

Bei der Verwendung von PHP für Datenbankoperationen, insbesondere nach dem Einfügen von Daten mithilfe der Vorverarbeitungsanweisung von MySQLI ( MySQLI_STMT ), müssen wir häufig die automatische Inkrement-ID des Datensatzes erhalten, die gerade für nachfolgende Query-, Update- oder Assoziationsvorgänge eingefügt wurde. In diesem Artikel wird detailliert vorgestellt, wie die zuletzt eingefügte ID über MySQLI_STMT :: $ Insert_id abgerufen wird, und zeigt, wie diese ID für nachfolgende Abfragen verwendet werden.

1. Was ist mysqli_stmt :: $ insert_id

MySQLI_STMT :: $ Insert_id ist ein Attribut des MySQLI_STMT -Objekts, mit dem die autoincrement -Primär -Schlüssel -ID des Datensatzes erhalten wird, das über die Vorverarbeitungsanweisung eingefügt wurde. Es ist zu beachten, dass diese Eigenschaft eine gültige ID nur dann zurückgibt, wenn der Einfügenvorgang durchgeführt wird und das Feld auto_increment in der Datentabelle festgelegt ist.

2. Verwenden Sie Beispiele

Hier ist ein vollständiges Beispiel dafür, wie Sie einen Datensatz einfügen und die eingefügte ID abrufen und diese ID verwenden, um die gerade eingefügten Daten abzufragen.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"test_db"</span></span><span>);

</span><span><span class="hljs-comment">// Überprüfen Sie die Verbindung</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// Daten einfügen SQL</span></span><span>
</span><span><span class="hljs-variable">$insert_sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (?, ?)"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-variable">$insert_sql</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Die Vorverarbeitung schlug fehl: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-comment">// Parameter binden und Insertion durchführen</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'john_doe'</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">'[email protected]'</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// Holen Sie sich das Einfügen ID</span></span><span>
</span><span><span class="hljs-variable">$inserted_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Erfolgreich einfügen,ID für: "</span></span><span> . </span><span><span class="hljs-variable">$inserted_id</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// Schließen Sie die Anweisung Insert</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();

</span><span><span class="hljs-comment">// Verwenden Sie den Einsatz ID Eine Frage durchführen</span></span><span>
</span><span><span class="hljs-variable">$select_sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM users WHERE id = ?"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-variable">$select_sql</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"查询语句Die Vorverarbeitung schlug fehl: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$inserted_id</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">get_result</span></span><span>();

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Abfrageergebnisse:\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Kein entsprechender Datensatz gefunden。\n"</span></span><span>;
}

</span><span><span class="hljs-comment">// Schließen Sie die Ressource</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3.. Dinge zu beachten

  1. Stellen Sie sicher, dass Sie dieselbe Datenbankverbindung verwenden <br> Wenn einfügen und Abfragen unterschiedliche Verbindungen verwenden, reflektiert Insert_id die eingefügte ID nicht korrekt.

  2. Die Tabelle muss das Feld auto_increment <br> enthalten Andernfalls gibt Insert_id keinen gültigen Wert zurück, selbst wenn der Einsatz erfolgreich ist.

  3. Inise_id ist eine Eigenschaft eines Anweisungsobjekts, kein Verbindungsobjekt <br> Verwenden Sie die $ stmt, nachdem Sie sich vorbereiten , um $ stmt-> insert_id zu erhalten, ansonsten sollte $ mysqli-> insert_id verwendet werden.

Iv. Anwendungsszenarien

  • Holen Sie sich die Haupt-Schlüssel-ID, nachdem Sie Bestellungen, Benutzer, Artikel usw. Aufzeichnungen eingefügt haben, um eine Eins-zu-Viele- oder viele-zu-Viele-Vereinigung einzurichten.

  • Implementieren Sie automatische Sprung- oder Feedback -Operationen, nachdem der Benutzer Daten eingereicht hat.

  • Ein eindeutiger Kennung für den Aufzeichnung des Betriebs führt zu einem Protokoll- oder Prüfungssystem.

5. Zusammenfassung

Durch MySQLI_STMT :: $ Insert_id können wir die zuletzt eingefügte Datensatz -ID problemlos erhalten, wodurch eine komplexere Datenbetriebslogik implementiert wird. In der tatsächlichen Entwicklung hilft diese Methode, die Genauigkeit und Konsistenz von Daten zu gewährleisten, und ist auch eine empfohlene Möglichkeit, MySQLI für sichere Datenbankvorgänge zu verwenden.