Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示MySQLi查询的错误?_Php_Mysql_Mysqli - Fatal编程技术网

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

Php 如何显示MySQLi查询的错误?,php,mysql,mysqli,Php,Mysql,Mysqli,我正在使用下面的脚本处理一个表单,将信息添加到我的网站。我遇到的问题是,当我提交表单时,没有任何内容被提交到数据库,并且没有错误。如何将错误报告添加到查询中 <?php if (isset($_POST['itemdescription'])) {$itemdescription = $_POST['itemdescription'];}else {$itemdescription = '';} if (isset($_POST['itemnumber'])) {$itemnumber =

我正在使用下面的脚本处理一个表单,将信息添加到我的网站。我遇到的问题是,当我提交表单时,没有任何内容被提交到数据库,并且没有错误。如何将错误报告添加到查询中

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

只需添加
或死亡(mysqli_错误($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注入的风险,请检查这里。你真的应该使用事先准备好的声明来避免任何风险

mysqli_error()
例如:

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

触发器错误比die好,因为您可以将其用于开发和生产,这是永久性的解决方案。

+1但我将详细说明如何将其用于开发和生产(如何在生产中不显示错误)。如果只是让错误打印到屏幕上,则不会。对于那些可能感到疑惑的人来说:trigger_error()对于生产和开发都很好,因为在生产中通常会关闭错误报告。因此,触发器_错误不会被打印出来。@KarlosFontana您不应该有类似“或死”这样的内容:“对不起,$sql查询失败,出现此错误:$error””。请阅读关于@JohnReid的内容,严格来说,错误报告也应该为生产设置为max on。它显示了应该关闭的错误。人们经常误解这两件事,这就是为什么我冒昧地干预。请选择“trigger_error()”而不是“die()”trigger_error(“查询失败!SQL:$SQL-error:”.mysqli_error($db),E_USER_error);或者更好,抛出异常并可能处理它。两者都比愚蠢和流行的
或die
更可取。