Ich repariere etwas von meinem alten Code und ich erstelle eine Datenbankklasse mit einer INSERT-Funktion. Zu Testzwecken habe ich es außerhalb der Klasse gelassen und möchte es mit Fehlern umgehen lassen.Fehlerbehandlung mit mysqli
Ich möchte die PHP-Fehler entfernen und meine eigenen Fehler zurückgeben. Im Moment habe ich die unten und arbeitet mit einem Einsatz auf doppelten Schlüssel in Ordnung, aber wenn ich aus dem bind_param den Typ Argument testen Entfernen ich die folgende Fehlermeldung erhalten:
Warning: mysqli_stmt::bind_param(): Invalid type or no types specified in /home/matt500b/csgoberry/public/catch.php on line 17
Executing the statement failed: No data supplied for parameters in prepared statement
Wie kann ich die Warnung Problem entfernen und halten nur meine zurück Schnur? Oder für Produktionsserver, was ist die beste Methode für diese Art von Aktion.
Auch welche anderen Fehler kann ich in Bezug auf mysqli Abfragen simulieren?
function INSERT($link, $sql, $args=null) {
if ($stmt = $link->prepare($sql)) {
for($i=0; $i<count($args); $i++) {
$stmt->bind_param($args[$i]["type"], $args[$i]["value"]);
}
if(!$stmt->execute()) {
return 'Executing the statement failed: ' . htmlspecialchars($stmt->error);
exit();
}
}
else {
return 'Preparing the statement failed: ' . htmlspecialchars($link->error);
exit();
}
return 'Finished';
}
$query = "INSERT INTO insertTest (`value`) VALUES (?)";
$queryArgs[] = array("type"=>"", "value"=>"test1");
echo INSERT($link, $query, $queryArgs);
'versuchen fangen'? http://stackoverflow.com/questions/17549584/how-to-efficiently-use-try-catch-blocks-in-php –
Ich simuliere Fehler, um alle Fehler gefangen und richtig angezeigt werden. Ich habe absichtlich "type" => "" leer gelassen. Also Abstimmung nicht doppelt wie das Problem, wie mit solchen Fehlern umgehen – Matt
versucht versuchen/fangen um die Ausführung, aber meine benutzerdefinierte Fehler zeigt nicht und nur die PHP-Warnung zeigt – Matt