2017-07-07 42 views
0

我有兩個問題,兩者都鏈接。首先,如果兩個客戶選擇相同的產品(pg_no)和日期(日期),則「已經預訂 - 請選擇另一個日期」未出現。這些字段是唯一約束。
二,數據插入或提交時localhost顯示完成地址 http://localhost/lstcomp/index.php?note=submitted。但是,當它失敗本地主機只顯示:http://localhost/lstcomp/php&mysql請選擇其他日期 - 消息沒有出現

<?php 
//connecting string 
include("dbconnect.php"); 
//assigning 
$name = $_REQUEST['Name']; 
$tele = $_REQUEST['Tele']; 
$city = $_REQUEST['City']; 
// UNIQUE CONSTRAINT 
$pg_no = $_REQUEST['pg_no']; //product 
$date = $_REQUEST['Date']; //date 



//checking if pg_no and Date are same 
$check = mysqli_query($db_connect, "SELECT * FROM lstclient WHERE pg_no='{$pg_no}', Date='{$date}'"); 

{ 
    echo "Already booked please select another date<br/>"; 
} 
//if not same then insert data 
else 
{ 
    $query = mysqli_query($db_connect, "INSERT INTO lstclient(pg_no,Name,Tele,City,Date) VALUES('$pg_no','$name','$tele','$city','$date')") or die(mysql_error()); 
} 
mysqli_close($db_connect); 

// messaging 
if ($query) { 
    header("location:index.php?note=failed"); 
} else { 
    header("location:index.php?note=success"); 
} 

?> 
+0

嘗試重新縮進代碼,因爲在調用echo之前沒有「if」語句,只有括號。 – Orionss

+0

如果你的查詢失敗,它會調用'die(mysql_error());'它退出你的代碼。所以'header(「location:index.php?note = failed」);'永遠不會被調用(也是交換消息)。 – MadMarc

+0

如果答案解決了您的問題,請考慮接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然後返回到此處,並使用勾號/複選標記執行相同操作,直至變爲綠色。這告知社區,找到了解決方案。否則,其他人可能會認爲這個問題仍然存在,並且可能需要發佈(更多)答案。您將獲得積分,其他人將被鼓勵幫助您。 *歡迎來到Stack!* –

回答

2

有幾個問題:

  1. 文件失敗,因爲叼着else的解析;它不與if語句配對。

    { 
        echo "Already booked please select another date<br/>"; 
    } 
    //if not same then insert data 
    else 
    { 
        $query = mysqli_query($db_connect, "INSERT INTO lstclient(pg_no,Name,Tele,City,Date) VALUES('$pg_no','$name','$tele','$city','$date')") or die(mysql_error()); 
    } 
    

    它看起來像你打算從你的SELECT語句($check)使用的結果,但是......

  2. SELECT語句是無效的; WHERE子句用AND或OR分隔,而不是逗號。

  3. 將行插入到數據庫表中時,當您使用mysqli擴展名時,您將死於mysql_error

  4. 您很容易受到SQL注入攻擊;如果pg_no碰巧是'; DELETE FROM users; --,作爲一個例子,你的用戶表將被刪除。您已經在使用mysqli擴展名,因此請使用參數綁定和準備好的語句。 Reference

+0

我開始寫關於OP代碼中所有錯誤的完整答案,然後我感到無聊。我真的放心你爲我做了! – MadMarc

+0

非常感謝您的幫助 –

相關問題