it-swarm.com.de

Wie zeige ich Fehler für meine MySQLi-Abfrage an?

Ich verwende das folgende Skript, um ein Formular zum Hinzufügen von Informationen zu meiner Website zu verarbeiten. Das Problem, das ich habe, ist, wenn ich das Formular abschicke, wird nichts an die Datenbank gesendet und es gibt keine Fehler. Wie kann ich meiner Abfrage Fehlerberichte hinzufügen?

<?php
if (isset($_POST['itemdescription'])) {$itemdescription = $_POST['itemdescription'];}else {$itemdescription = '';}
if (isset($_POST['itemnumber'])) {$itemnumber = $_POST['itemnumber'];}else {$itemnumber = '';}
if (isset($_POST['sellerid'])) {$sellerid = $_POST['sellerid'];}else {$sellerid = '';}
if (isset($_POST['purchasedate'])) {$purchasedatepre = $_POST['purchasedate'];$date = DateTime::createFromFormat("D F d, Y", $purchasedatepre);$purchasedate = date('Y-m-d',strtotime($purchasedatepre));}else {$purchasedatepre = ''; $purchasedate = '';}
if (isset($_POST['otherinfo'])) {$otherinfo = $_POST['otherinfo'];}else {$otherinfo = '';}
if (isset($_POST['numberofitems'])) {$numberofitems = $_POST['numberofitems'];}else {$numberofitems = '';}
if (isset($_POST['numberofitemsused'])) {$numberofitemsused = $_POST['numberofitemsused'];}else {$numberofitemsused = '';}
if (isset($_POST['isitdelivered'])) {$isitdelivered = $_POST['isitdelivered'];}else {$isitdelivered = '';}
if (isset($_POST['price'])) {$price = $_POST['price'];}else {$price = '';}

$itemdescription = str_replace("'", "", "$itemdescription");
$itemnumber = str_replace("'", "", "$itemnumber");
$sellerid = str_replace("'", "", "$sellerid");
$otherinfo = str_replace("'", "", "$otherinfo");

include("connectmysqli.php"); 

mysqli_query($db,"INSERT INTO stockdetails (`itemdescription`,`itemnumber`,`sellerid`,`purchasedate`,`otherinfo`,`numberofitems`,`isitdelivered`,`price`) VALUES ('$itemdescription','$itemnumber','$sellerid','$purchasedate','$otherinfo','$numberofitems','$numberofitemsused','$isitdelivered','$price')");

// header('Location: stockmanager.php?&key='.$key);
?>
44
Iain Simpson

Fügen Sie einfach or die(mysqli_error($db)); am Ende Ihrer Abfrage hinzu. Dadurch wird der mysqli-Fehler ausgegeben.

 mysqli_query($db,"INSERT INTO stockdetails (`itemdescription`,`itemnumber`,`sellerid`,`purchasedate`,`otherinfo`,`numberofitems`,`isitdelivered`,`price`) VALUES ('$itemdescription','$itemnumber','$sellerid','$purchasedate','$otherinfo','$numberofitems','$numberofitemsused','$isitdelivered','$price')") or die(mysqli_error($db));

Als Randnotiz würde ich sagen, Sie sind in Gefahr von mysql injection, überprüfen Sie hier Wie kann ich SQL-Injection in PHP verhindern? . Sie sollten wirklich vorbereitete Anweisungen verwenden, um jedes Risiko zu vermeiden.

70
Fabio
mysqli_error()

Wie in:

$sql = "Your SQL statement here";
$result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);

Fehler auslösen ist besser als sterben, weil Sie es für die Entwicklung und Produktion verwenden können, es ist die dauerhafte Lösung.

25
Jessica

Zu Entwicklungszwecken können Sie or die(mysqli_error($conn)) vor dem Semikolon in Ihrer mysqli_query($conn, 'SELECT...') -Zeile einfügen.

Stellen Sie sicher, dass Sie dies entfernen, bevor Sie Push to Production ausführen, damit Sie keine Informationen über Ihre Datenbank an die Öffentlichkeit weitergeben.

6
Travesty3