Aktueller Standort: Startseite> Neueste Artikel> Was sind die besten Praktiken für die Nutzung von MySQLI_STMT :: $ Insert_id, um Bestellnummern oder eindeutige Bezeichner zu generieren?

Was sind die besten Praktiken für die Nutzung von MySQLI_STMT :: $ Insert_id, um Bestellnummern oder eindeutige Bezeichner zu generieren?

gitbox 2025-08-28

1. Verstehen Sie MySQLI_STMT :: $ Insert_id

MySQLI_STMT :: $ Insert_id ist eine Eigenschaft, die von der PHP MySQLI -Erweiterung bereitgestellt wird. Nachdem eine Anweisung mit einem Einfügenvorgang ausgeführt wurde, wird der auto_increment -Wert zurückgegeben, der gerade in den Datensatz eingefügt wurde. Dieser Wert wird normalerweise als Grundlage für die Erzeugung einer eindeutigen Kennung verwendet. Beachten Sie, dass $ insert_id erst nach der Ausführung der Anweisung Insert gültig ist.

Nehmen wir beispielsweise an, wir haben eine Bestellentabelle mit einem selbstwachsenden Feld Order_id , mit dem die eindeutige Kennung der Reihenfolge gespeichert wird. Wenn eine neue Bestellung eingefügt wird, gibt $ insert_id die order_id dieser Bestellung zurück.

 <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-string">"INSERT INTO orders (product_name, quantity, price) VALUES (?, ?, ?)"</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">"sid"</span></span><span>, </span><span><span class="hljs-variable">$product_name</span></span><span>, </span><span><span class="hljs-variable">$quantity</span></span><span>, </span><span><span class="hljs-variable">$price</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">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;  </span><span><span class="hljs-comment">// Holen Sie sich die neu eingefügte BestellungID</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Neue OrdnungID: "</span></span><span> . </span><span><span class="hljs-variable">$order_id</span></span><span>;
</span></span>

Im obigen Code-Snippet haben wir eine Operation ausgeführt, um eine Bestellung einzufügen, und die Order_ID der gerade über $ stmt-> insert_id eingefügten Bestellung erhalten.


2. Verwenden Sie Insert_id, um eindeutige Kennungen zu generieren

Obwohl der auto_increment -Wert selbst eine eindeutige Kennung eines Ganzzahltyps ist, möchten wir manchmal, dass diese Kennung lesbarer ist oder bestimmte Geschäftsanforderungen erfüllt, z. B. Zeitstempel, Produktkategorien und andere Informationen. Zu diesem Zeitpunkt können wir Insert_id kombinieren, um geschäftsgerichtete Bestellnummern oder andere eindeutige Kennungen zu generieren.

Hier sind einige gängige Möglichkeiten, um eine Bestellnummer zu generieren:

2.1 Bestellnummer basierend auf Insert_ID und aktueller Zeit generieren

Wir können Insert_id mit dem aktuellen Zeitstempel kombinieren, um eine eindeutigere Bestellnummer zu erzeugen. Auf diese Weise kann die Bestellnummer nicht nur die Einzigartigkeit sicherstellen, sondern auch Zeitinformationen enthalten, die nach der Anlage und Sortierung erleichtert werden.

 <span><span><span class="hljs-variable">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"YmdHis"</span></span><span>);  </span><span><span class="hljs-comment">// Aktueller Zeitstempel,Format:Jahr, Monat, Tag, Stunde, Minute, zweiter</span></span><span>
</span><span><span class="hljs-variable">$unique_order_id</span></span><span> = </span><span><span class="hljs-string">"ORD"</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$order_id</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die generierte Bestellnummer: "</span></span><span> . </span><span><span class="hljs-variable">$unique_order_id</span></span><span>;
</span></span>

In diesem Beispiel lautet das Bestellnummer -Format ORD20230714153001234 , wobei 20230714153001 die aktuelle Zeit und 234 die eindeutige Bestell -ID ist, die von Insert_ID erhalten wurde.

2.2 Bestellnummern basierend auf der Produktkategorie und Insert_id generieren

Wenn die Bestellnummer der Produktkategorie im Anwendungsszenario zugeordnet werden muss, kann die Bestellnummer durch Kombinieren von Produktinformationen mit Insert_ID generiert werden. Beispielsweise möchte eine E-Commerce-Plattform möglicherweise das Präfix in der Bestellnummer auf den Code der Produktkategorie festlegen.

 <span><span><span class="hljs-variable">$product_category_code</span></span><span> = </span><span><span class="hljs-string">"ELEC"</span></span><span>;  </span><span><span class="hljs-comment">// Elektrische Produkte annehmen</span></span><span>
</span><span><span class="hljs-variable">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</span><span><span class="hljs-variable">$unique_order_id</span></span><span> = </span><span><span class="hljs-variable">$product_category_code</span></span><span> . </span><span><span class="hljs-string">"-"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$order_id</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die generierte Bestellnummer: "</span></span><span> . </span><span><span class="hljs-variable">$unique_order_id</span></span><span>;
</span></span>

Die auf diese Weise generierte Bestellnummer kann ELEC-000023 sein, wobei ELEC die Produktkategorie darstellt und 000023 eine eindeutige Kennung ist, die basierend auf Insert_ID erzeugt wird.


3. Vorsichtsmaßnahmen und Best Practices

Bei Verwendung von MySQLI_STMT :: $ Insert_id müssen Sie neben der Einzigartigkeit auch auf die folgenden Schlüsselpunkte achten:

3.1 Die Auswirkungen von Transaktionen

Bei Verwendung einer Transaktion kann Insert_id die ID des zuletzt erfolgreich eingefügten Datensatzes in der Transaktion zurückgeben. Wenn die Transaktion also mehrere Einfügeanweisungen enthält, stellen Sie sicher, dass $ Insert_id an der richtigen Stelle verwendet wird. Wenn die Transaktion zurückgerollt ist, wird auch der Wert von Insert_id zurückgesetzt.

3.2 Sicherheit

Obwohl eindeutige Kennungen von Insert_ID erzeugt werden können, kann es in einigen Fällen erforderlich sein, die Unvorhersehbarkeit des Kennung sicherzustellen. Vermeiden Sie beispielsweise die Verwendung eines rein numerischen Typs als Auftragszahl, um das Risiko zu verringern, böswillig erraten zu werden. Das Kombinieren von Daten, Zeitstempeln und anderen Methoden kann die Komplexität und Sicherheit von Kennungen erhöhen.

3.3 Wert des auto_increment -Werts zurücksetzen

Wenn der auto_increment -Wert in der Datenbanktabelle manuell zurückgesetzt wird (z. B. wurde vom Administrator eine Änderungstabelle durchgeführt), kann der Wert von Insert_id zurückgesetzt oder dupliziert werden. Daher ist es sehr wichtig, den Tisch gesund zu halten und unnötige Operationen zu vermeiden.