如何显示我的MySQLi查询的错误?

我正在使用以下脚本来处理表单以将信息添加到我的网站。 我遇到的问题是当我提交表单没有提交到数据库,并没有错误。 如何将错误报告添加到我的查询?

<?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("DF d, Y", $purchasedatepre);$purchasedate = date('Ym-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); ?> 

只需简单地添加or die(mysqli_error($db)); 在查询结束时,这将打印mysqli错误。

  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)); 

作为一个侧面说明,我会说你有冒险的mysql injection ,请点击这里如何防止SQL注入PHP中? 。 你应该使用准备好的语句来避免任何风险。

 mysqli_error() 

如:

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

触发错误比死亡更好,因为您可以将其用于开发和生产,这是永久的解决scheme。

出于开发目的,您可以在mysqli_query()行中的分号之前添加or die(mysqli_error())

确保在推送到产品之前删除它,因此不会将有关数据库的信息输出给公众。