내 MySQLi 쿼리에 대한 오류를 표시하는 방법? [복제]
PHP내 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);
?>
해결법
-
==============================
1.
간단히 추가 또는 삭제 (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 인젝션의 위험에 처해 있다고 말하고 싶습니다. 여기에서 확인하십시오 PHP에서 SQL 인젝션을 어떻게 막을 수 있습니까? 위험을 피하려면 준비된 진술을 사용해야합니다.
-
==============================
2.
mysqli_error()
마찬가지로 :
$sql = "Your SQL statement here"; $result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);
트리거 오류는 개발 및 생산에 사용할 수 있기 때문에 다이보다 낫습니다. 영구적 인 솔루션입니다.
-
==============================
3.
개발 목적으로, mysqli_query () 줄에 세미콜론 앞에 추가하거나 삭제할 수 있습니다 (mysqli_error ()).
프로덕션으로 보내기 전에이를 제거해야 데이터베이스에 대한 정보를 공개하지 않아야합니다.
from https://stackoverflow.com/questions/17053466/how-to-display-errors-for-my-mysqli-query by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
어떻게 PHP에서 세션 시간 초과를 변경하려면? (0) | 2018.09.05 |
---|---|
키 이름 / 경로로 다차원 배열에 액세스하고 조작하는 방법? (0) | 2018.09.05 |
URL에 대한 PHP 유효성 검사 / 정규식 (0) | 2018.09.05 |
PDO로 행 수 계산 (0) | 2018.09.05 |
in_array () 및 다차원 배열 (0) | 2018.09.05 |