Как отобразить ошибки для моего запроса 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("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);
?>
Author: Sᴀᴍ Onᴇᴌᴀ, 2013-06-12

3 answers

Просто добавьте 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?. Вы действительно должны использовать подготовленные заявления, чтобы избежать любого риска.

 61
Author: Fabio, 2017-05-23 12:25:45
mysqli_error()

Как в:

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

Ошибка запуска лучше, чем смерть, потому что вы можете использовать ее для разработки И производства, это постоянное решение.

 23
Author: Jessica, 2013-06-11 20:46:16

В целях разработки вы можете добавить or die(mysqli_error($conn)) перед точкой с запятой в строке mysqli_query($conn, 'SELECT...').

Убедитесь, что вы удалили это перед запуском в производство, чтобы не публиковать информацию о своей базе данных.

 7
Author: Travesty3, 2018-09-26 15:07:28