zu beheben Während ich nicht genau Verstehen Sie, was Sie mit "zwei Daten" meinen, ich sehe mehrere Probleme mit Ihrem Code.
Zunächst einmal ist es schrecklich ineffizient und anfällig für race conditions. Es ist auch ziemlich falsch, weil es nicht das tut, was Sie wollen. Nicht zu vergessen, sollte durch native Datenbankfunktionalität ersetzt werden.
Die meisten dieser Fehler können behoben werden, indem einfach das Feld version_id
in AUTO_INCREMENT
geändert wird. Dadurch erhält der neue Datensatz automatisch die nächste verfügbare ID im Set, genau wie das, was Sie tun möchten. Dann können Sie diese ID abrufen, indem Sie „lastInsertId()“
Die gesamte Code machen würde in Ihrem Beitrag superflous und benötigen nur Sie so etwas wie dies tun, wenn tatsächlich Daten eingefügt:
$sql = "INSERT INTO `version`(`setting`, `date`) VALUES (:setting, :date)";
$stmt = $db->prepare ($sql);
$res = $stmt->execute ($data);
$newID = $db->lastInsertId();
Nach Die neue Versionskennung wird in der Variablen $newID
gespeichert.
Natürlich, wenn Sie die Versions-ID aus irgendeinem Grund UPDATE
möchten, dann INSERT
ist der falsche Befehl zu verwenden. Warum auch eine ganze Tabelle für eine einfache Versionsnummer verwenden? Kurz gesagt, dein ganzer Tisch macht für mich keinen Sinn.
Ich empfehle, die Gründe dafür zu erklären, damit wir möglicherweise bessere Lösungen finden können.
Sie meinen 2 Reihen? Außerdem würde ich denken, dass Sie den Wert von Version_id auch zu Ihrer neu hinzugefügten Zeile hinzufügen müssten. – jeroen
ist es v $ lastVersion oder $ lastVersion –
spezifizieren Sie ein wenig mehr, mit was Sie arbeiten. Ihre SELECT- und INSERT-Befehle stimmen nicht überein. – RST