ID nach Insert bekommen?
Barksalot
- php
Hallo,
habe ich die Möglichkeit nach einem INSERT eine ID zu erhalten wie der Datensatz gerade erhalten hat?
// Neuer Eintrag erstellen
if ($stmt = $mysqli->prepare("INSERT INTO defekt (
avd_aid,
avd_pid,
avd_grund,
avd_beschreibung,
avd_menge,
avd_mid,
avd_datum,
avd_uhrzeit,
avd_code)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")) {
$avd_aid = $_POST["avd_aid"];
$avd_pid = $_POST["avd_pid"];
$avd_grund = $_POST["avd_grund"];
$avd_beschreibung = $_POST["avd_beschreibung"];
$avd_menge = $_POST["avd_menge"];
$avd_mid = $object->user_code;
$avd_datum = date("Y-m-d");
$avd_uhrzeit = date("H:i:s");
$avd_code = $ADCode;
$stmt->bind_param("sssssssss",
$avd_aid,
$avd_pid,
$avd_grund,
$avd_beschreibung,
$avd_menge,
$avd_mid,
$avd_datum,
$avd_uhrzeit,
$avd_code);
}}
$stmt->execute();
header("Location: $weiterleitung");
}
else {
echo $mysqli -> error;
}
Ich benötige die ID im weiteren Verlauf um einen eMail Link zusammenzubauen. Ansonsten meine Idee, ich lese die höchste ID aus addiere +1. Allerdings wenn jemand anders zur gleichen Zeit einen Eintrag vornimmt, dann habe ich ein Problem.
Bis bald!
Bernd
Moin,
habe ich die Möglichkeit nach einem INSERT eine ID zu erhalten wie der Datensatz gerade erhalten hat?
Klar, dass geht mit $mysqli->insert_id
.
Gruß
Jo
Hallo J,
danke auch dir.
Bis bald!
Bernd
Tach!
habe ich die Möglichkeit nach einem INSERT eine ID zu erhalten wie der Datensatz gerade erhalten hat?
Ja klar, das mysqli-Objekt hat eine Eigenschaft namens $insert_id, also $mysqli->insert_id
, da steht sie drin.
Außerdem hat MySQL selbst die Funktion LAST_INSERT_ID()
, die du auch im nachfolgenden SQL-Statement derselben Sitzung nehmen kannst, ohne den Wert über PHP zu schleppen.
dedlfix.
Hallo dedlfix,
danke dir. Hat wunderbar geklappt. Hab es so umgesetzt
$stmt->execute();
$testID = $mysqli->insert_id;
Bis bald!
Bernd
Hello,
habe ich die Möglichkeit nach einem INSERT eine ID zu erhalten wie der Datensatz gerade erhalten hat?
Ja klar, das mysqli-Objekt hat eine Eigenschaft namens $insert_id, also
$mysqli->insert_id
, da steht sie drin.Außerdem hat MySQL selbst die Funktion
LAST_INSERT_ID()
, die du auch im nachfolgenden SQL-Statement derselben Sitzung nehmen kannst, ohne den Wert über PHP zu schleppen.
Insbesondere, da das Durchschleifen durch PHP (vor PHP 7?) den Wertebereich auf BIGINT(+) [31 Bit] eingeschränkt hat, während datenbankintern der volle Wertebereich auch zum Rechnen genutzt werden kann (konnte?).
@dedlfix : Arbeitet PHP 7 auf 64-Bit-Systemen nun auch mit der vollen Registerbreite?
Liebe Grüße
Tom S.
Tach!
Insbesondere, da das Durchschleifen durch PHP (vor PHP 7?) den Wertebereich auf BIGINT(+) [31 Bit] eingeschränkt hat, während datenbankintern der volle Wertebereich auch zum Rechnen genutzt werden kann (konnte?).
Was aber auch meistens irrelevant ist, über Max-Int32 muss man erstmal mit seinen IDs kommen.
@dedlfix : Arbeitet PHP 7 auf 64-Bit-Systemen nun auch mit der vollen Registerbreite?
Weiß ich nicht.
dedlfix.
Tach!
Arbeitet PHP 7 auf 64-Bit-Systemen nun auch mit der vollen Registerbreite?
Weiß ich nicht.
Weiß ich jetzt, Handbuch sagt ja, aber Integer gibts nur als nur signed.
dedlfix.
Hello,
Arbeitet PHP 7 auf 64-Bit-Systemen nun auch mit der vollen Registerbreite?
Weiß ich nicht.
Weiß ich jetzt, Handbuch sagt ja, aber Integer gibts nur als nur signed.
Also quasi 63 Bit nutzbare Breite? Danke für's Nachgucken. Hast Du den Link zur Handbuchseite noch präsent?
Liebe Grüße
Tom S.
Tach!
Danke für's Nachgucken. Hast Du den Link zur Handbuchseite noch präsent?
Stand bei Typen -> Integer.
dedlfix.
Moin @@dedlfix,
Was aber auch meistens irrelevant ist, über Max-Int32 muss man erstmal mit seinen IDs kommen.
manchmal reicht dazu nur ein singender und tanzender Südkoreaner 😉
Viele Grüße
Robert
Tach!
Was aber auch meistens irrelevant ist, über Max-Int32 muss man erstmal mit seinen IDs kommen.
manchmal reicht dazu nur ein singender und tanzender Südkoreaner 😉
Das war ein Counter, keine ID.
dedlfix.