tk: php header("location ") oder window.close ohne funktion

Beitrag lesen

Hallo,

Mein Delete Statement sieht jetzt so aus

if($db->query("DELETE FROM $TYPE  WHERE ID = $ID1")){
    printf("%d bearbeitete Zeilen.\n", $db->affected_rows);
	}
	$db->close;	

Das ist leider immer noch genauso falsch und gefährlich wie vorher! Wie ich schon schrieb lag dein Problem an der execute()-Zeile, die bei dem von dir verwendeten mysqli einen Fatal-Error ausgelöst. Bei der Entwicklung solltest du die Ausgabe von Fehlermeldungen einschalten um solche Fehler selbst direkt zu sehen auch ohne ins errorlog schauen zu müssen.

Die letzte Zeile scheint mir aber auch falsch zu sein - du möchtest die Methode close() aufrufen (was allerdings nicht notwendig ist), eine Eigenschaft close (also ohne die Klammern dahinter) gibt es nicht.

Ist manchmal schwer zu sehen, welche Syntax jetzt zusammen passt oder nicht.

Prozeduale oder Objektive Schreibweise

Mysqli oder mysql oder pdo

Die mysql-Erweiterung gibt es nicht mehr, es bleiben nur noch mysqli und PDO. Ich würde zu PDO (und damit objektorientiert) raten, das unterstützt benannte Parameter in prepared Statements, und das Zuweisen der Parameter ist einfacher. Dein Lösch-Query sähe dann so aus:

$stm = $pdo->prepare("DELETE FROM ".$TYPE." WHERE ID = :id");
$stm->execute(['id' => $ID1]);

wenn du bei mysqli bleiben willst, musst du statt „:id“ ein Fragezeichen verwenden und vor dem execute() noch die Werte über bind_param() zuweisen (das was ich gestern geschrieben hatte war nicht ganz korrekt, das mysqli-execute kann keine Parameter entgegennehmen, das muss vorher gemacht werden).

Da renne ich immer mal wieder in Fallen ... Genau so war es jetzt hier mit dem Execute()

Gewöhn dir ab besten an immer prepared Statements zu verwenden und verwende query() nur dann wenn du einen statischen Query ausführen willst der keinerlei Parameter enthält. Und denk daran die Löschaktion über einen POST-Request anzustoßen, nicht über einen Link.

Den Code für den Button habe ich, so wie er ist, tatsächlich aus einem Lehrbuch (!), und habe den bislang immer für alle Knöpfe übernommen

Von wann ist das Lehrbuch? Bücher neigen dazu relativ schnell zu veralten, auch Internetseiten sind oft veraltet (bei denen ist es aber oft nicht erkennbar von wann die Seite stammt). Leider ist es (v.a. für Anfänger) meist schwer zu erkennen welche Seite/welches Buch was taugt und welche(s) nicht.

Gruß,
Tobias