Onkel Hans: Datensatzlöschung kontrollieren

Beitrag lesen

Hi,

zunächst mal vielen Dank für diese sehr interessante Ausführung und die dahinter stehenden Überlegungen! Deinen Text verstehe ich, nur der von Dir skizzierte Code bereitet mir etwas Schwierigkeiten.

if query(...)
  echo (class=ok) Aktion fehlerfrei, betroffene Datensätze: affected_rows.
else
  echo (class=error) Fehlerhaft.
  administratorbenachrichtigung(error_text)

Da verstehe ich mehreres nicht. Ich habe gelernt, dass die if-Klausel _immer_ in Klammern stehen muß, wieso steht das 'query' also außerhalb von Klammern? Und wenn ich als if-Bedingung einen Query nehme, was ist da die Bedingung? Ich meine: Bei if($a==2) ist es klar: Wenn $a den Wert 2 hat, dann... - aber was bedeutet if(...query...)?

Wenn ich bei $sql="SELECT id, vorname, familienname, geburtsjahrFROM11_dbtestWHEREid=$id"; mit var_dump($sql); überprüfe, was hinter $sql steht, bekomme ich folgende Ausgabe:

string(83) "SELECT id, vorname, familienname, geburtsjahr FROM 11\_dbtest WHERE id=4" bool(true)

Was sagt mir denn da das 'bool(true)' zum Schluß? Und vermute ich das richtig, dass die von Dir gemeinte if-Klausel überprüft, ob dieser bool-Wert wahr oder falsch ist?

Außerdem überlege ich gerade, wie ich das von Dir vorgeschlagene Procedere umsetzen kann/soll, bei folgendem Code, der jetzt noch ohne Überprüfung einfach blind behauptet, dass der gewünschte Datensatz gelöscht worden ist:

include('db_connect.php');  
$sql="SELECT `id`, `vorname`, `familienname`, `geburtsjahr` FROM `11_dbtest` WHERE `id`=$id";  
$ausgabe=$db->prepare($sql);  
$ausgabe->execute();  
$ausgabe->bind_result($id, $name, $familie, $jahr);  
$ausgabe->fetch();  
$ausgabe->close();  
$loeschung=$db->query("DELETE FROM `11_dbtest` WHERE `id`=$id");  
echo"<p>".$name." ".$familie." (Geburtsjahr ".$jahr.") mit der ID ".$id." wurde gelöscht.</p>\n";  
include('db_disconnect.php');

Liebe Grüße

Onkel Hans