Brombeermilchtrinker: Fehlermeldung bei UPDATE von Datensatz

Beitrag lesen

Hi Chris,

Und wie gehe ich jetzt bei der Fehlersuche weiter vor?

Wie immer beim Umgang mit MySQLi, wenn dabei irgendwas schief ging - mysqli->error befragen.

OK, ich habe jetzt etwas herumgedoktert und folgender Code

$kommando = $db->prepare($aendern);
   var_dump($kommando);
   printf("Errormessage: %s\n", $db->error);

brachte die Ausgabe "bool(false) Errormessage: Table 'db151444.001_dbtest' doesn't exist".

Ich Idiot! Klar, die Tabelle heißt "001_test", ohne dem "db". Wenn ich jetzt die Fehlerausgabe noch lasse und den richtigen Namen in die Query schreibe, dann funktioniert die Datensatzänderung und die 2 Ausgeben sind:

" object(mysqli_stmt)#2 (0) { } Errormessage: "

Mein Problem ist zwar gelöst, aber ich würd trotzdem noch gerne die var_dump Ausgabe besser verstehen:

object(mysqli_stmt)#2 (0) { } sagt mir mal, daß $kommando ein Objekt mit der Methode "mysqli_stmt" ist, hab ich das richtig verstanden? Und was sagt das "#2 (0) { }" aus?

Ich habe gerade mehrmals deine Erklärung zu meiner Frage "Was heißt denn "Ein Objekt, das eine Methode ... besitzt"?" gelesen. Das ist aber schon _sehr_ verwirrend, hm? :-) Aber ich denke, ich hab die _Grundzüge_ dessen, worum es geht, halbwegs verstanden. Ohe Deiner Erklärung stünde ich jetzt _noch_ dümmer da.

Ach ja, das wollt ich auch noch fragen, Du sagtes vorher:

»»»» Hm, ich stecke leider. Ich habe keine Probleme beim Anlegen, beim Zählen oder bei der Ausgabe von Datensätzen.

Dann hast du dabei bisher lediglich *Glueck* gehabt, wenn du dabei auf jegliche Erfolgskontrolle bei Objekterzeugungen und Methodenaufrufen ebenso verzichtet hast.

Wie meintest Du das? Nehmen wir als Beispiel das Anlegen eines neuen Datensatzes. Das habe ich so gelöst:

     include("dbverbindung.php");  
     $sql = 'INSERT INTO `001_test` (`001_name`, `001_ort`, `001_eintrag`) VALUES (?, ?, ?)';  
     $kommando = $db->prepare($sql);  
     var_dump($kommando);  
     $kommando->bind_param('sss', $_POST['name'], $_POST['ort'], $_POST['eintrag']);  
     $kommando->execute();  
     include("dbtrennung.php");  
     echo"<p>Die Daten wurden eingetragen.</p>\n";

Und das funktioniert. Hab ich Dich richtig verstanden, daß ich es nicht dabei belassen soll, daß es funktioniert sondern daß es einen guten Programmierer [1] auszeichnet, jetzt _totzdem_ Überprüfungen zu machen. Und wenn ja, wie würdest Du da vorgehen jetzt?

MfG

Der Brombeermilchtrinker

[1] Damit will ich mich natürlich _nicht_ als guten Programmierer bezeichnen. Aber ich würd zumindest gerne jene Standards einhalten und beachten, damit Leute wie Du oder dedlfix sich nicht an die Stirn greifen müssen, wenn Sie meinen Code sehen. :-)