次のスクリプトを使用してフォームを処理し、Webサイトに情報を追加しています。私が抱えている問題は、フォームを送信するときにデータベースに何も送信されず、エラーがないことです。クエリにエラーレポートを追加するにはどうすればよいですか?
<?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);
?>
クエリの最後に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
の危険にさらされていると言うでしょう、ここをチェックしてください PHPでSQLインジェクションを防ぐにはどうすればいいですか? 。リスクを回避するには、準備済みステートメントを実際に使用する必要があります。
mysqli_error()
次のように:
$sql = "Your SQL statement here";
$result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);
トリガーエラーは、開発と生産に使用できるため、死ぬよりも優れています。これは永続的なソリューションです。
開発目的で、or die(mysqli_error($conn))
行のセミコロンの前にmysqli_query($conn, 'SELECT...')
を追加できます。
本番環境にプッシュする前にこれを必ず削除して、データベースに関する情報を一般に出力しないようにしてください。