2013-06-11 6 views
38

मैं अपनी वेबसाइट पर जानकारी जोड़ने के लिए एक फॉर्म को संसाधित करने के लिए निम्न स्क्रिप्ट का उपयोग कर रहा हूं। मेरी समस्या यह है कि जब मैं फॉर्म जमा करता हूं तो डेटाबेस में कुछ भी सबमिट नहीं होता है, और इसमें कोई त्रुटि नहीं होती है। मैं अपनी क्वेरी में त्रुटि रिपोर्टिंग कैसे जोड़ सकता हूं?मेरी 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); 
?> 

उत्तर

57

बस अपनी क्वेरी के अंत में 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 का खतरा होता है कहेंगे, यहां How can I prevent SQL injection in PHP? की जाँच करें। किसी भी जोखिम से बचने के लिए आपको वास्तव में तैयार बयानों का उपयोग करना चाहिए।

+0

धन्यवाद, यह अपने मर रहा है के रूप में काम कर रहा है और पुन: निर्देशन के रूप में अगर मैं टिप्पणी के निशान को दूर काम नहीं करता है, लेकिन यह भी नहीं करता है किसी भी त्रुटि प्रदर्शित स्क्रिप्ट रोक रहा है। –

+1

जहां तक ​​मैं देख सकता हूं, मैं अपने व्यवस्थापक के php के लिए लॉगिन विवरण के बाद सुबह में दो बार जांच करने जा रहा हूं। –

+0

@Iain ठीक उन्हें चेक करें, ऐसा लगता है कि वहाँ कुछ कनेक्शन – Fabio

5

विकास उद्देश्यों के लिए, आप अपने mysqli_query() लाइन में अर्धविराम से पहले or die(mysqli_error()) जोड़ सकते हैं।

आप इस हटाने से पहले आप उत्पादन करने के लिए धक्का सुनिश्चित करें, ताकि आप जनता के लिए अपने डेटाबेस के बारे में नहीं उत्पादन जानकारी है।

20
mysqli_error() 

में के रूप में:

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

उत्प्रेरक त्रुटि से बेहतर मर क्योंकि आप विकास और उत्पादन के लिए उपयोग कर सकते हैं है, यह स्थायी समाधान नहीं है।

+1

+1, लेकिन मैं विस्तार और उत्पादन (उत्पादन में त्रुटि को कैसे दिखाया नहीं जा सकता) दोनों के लिए इसका उपयोग करने के तरीके के बारे में विस्तार से बताऊंगा। – Travesty3

+0

@ ट्रेवेस्टी 3 बस इसका इस्तेमाल करें। यह कोड विकास और उत्पादन दोनों के लिए सही है –

+1

यदि आप स्क्रीन पर त्रुटि को प्रिंट करने दें तो यह नहीं है। – Jessica

संबंधित मुद्दे