Versionen dieses Beitrags

Aufwand eingrenzen

Daisys auge Auge
  • Aufwand eingrenzen
  • Hallo
  • > ~~~php
  • > function test123($mysqli) {
  • > $stmt = $mysqli->prepare("SELECT id FROM warenkorb
  • > WHERE DATE( FROM_UNIXTIME( datum ) ) > NOW() - INTERVAL 2 DAY");
  • > $stmt->execute();
  • > $stmt->bind_result($id);
  • > $stmt->store_result();
  • >
  • > if($stmt->num_rows() > 0) {
  • >
  • > while ($stmt->fetch()){
  • > $test123[] = array(
  • > 'id' => $id
  • > );
  • > }
  • > return $test123;
  • > }
  • > }
  • >
  • > $EinfachTest = test123($mysqli);
  • >
  • > if($EinfachTest > 0) {
  • >
  • > foreach($EinfachTest as $array){
  • >
  • > $stmt = $mysqli->prepare("DELETE FROM warenkorb WHERE id=? ");
  • > $stmt->bind_param("i", $array['id']);
  • > $stmt->execute();
  • > $stmt->close();
  • > }
  • > }
  • > else { echo "Leer"; }
  • > ~~~
  • Mal 'ne grundsätzliche Manöverkritik.
  • Du holst dir in der Funktion `test123` alle Datensätze, in denen der Wert von `datum` mehr als zwei Tage in der Vergangenheit liegt. Danach nimmst du das Array der in der Funktion ermittelten Datensätze und führst in der Schleife über das Array *jeweils eine* Löschanfrage aus.
  • Du holst dir in der Funktion `test123` die Spalte „id“ aller Datensätze, in denen der Wert von `datum` mehr als zwei Tage in der Vergangenheit liegt. Danach nimmst du das Array der in der Funktion ermittelten Datensätze und führst in einer Schleife über das Array *jeweils eine* Löschanfrage aus.
  • Das ganze Procedere funktioniert auch in einem einzigen Query. In dem ermittelst du mit einem Subquery die zu löschenden Datensätze und übergibst diese Liste in die WHERE-Klausel des Hauptquerys, der diese Datensätze löschen soll.
  • ~~~sql
  • DELETE FROM warenkorb
  • WHERE id IN(
  • (SELECT id FROM warenkorb WHERE DATE(FROM_UNIXTIME(datum)) > NOW() - INTERVAL 2 DAY)
  • );
  • ~~~
  • Da in der Abfrage keine variablen Werte vorhanden sind, ist nicht mal ein Parameter zu binden. Weiterhin kann der PHP-Code hier stark vereinfacht werden, da entweder die Funktion oder, bei Behalt der Funktion, die Ergebnisverarbeitung wegfällt.
  • Tschö, Auge
  • --
  • Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
  • Toller Dampf voraus von Terry Pratchett