2017-01-26 32 views
0

當來自數據庫的用戶名==用戶名和數據庫中的日期==日期時,它應該回顯錯誤消息,而是顯示成功。我嘗試使用「=」,但即使數據被假定爲正確,結果仍會回顯錯誤消息。請幫忙。爲什麼不能顯示錯誤信息?

這是我的代碼:

if(!empty($_POST['username'])){ 

     $username=$_POST['username']; 
     } 
     else 
     { 
     $username=null; 
     $usererr = ""; 
     } 

    if(!empty($_POST['datepicker'])){ 
     $date = date('y-m-d', strtotime($_POST['datepicker'])); 
     } 
     else 
     { 
     $date=null; 
     $dateerr = ""; 
     } 

     $mysqli = new mysqli("", "", "", ""); 

      $stmt = $mysqli->prepare("SELECT username, date FROM booking WHERE username='$username' and date ='$date'"); 

      $stmt->bind_param("ss", $username, $date); 

      $stmt->execute(); 

      $stmt->bind_result($cusername, $cdate); 
      $stmt->fetch(); 

     if($cusername == $username && $cdate == $date){ 
      echo"You have already book this day. Please select another day"; 
     } 
     else{ 
      echo"Success"; 
      $chdate = $date; 
     } 
     if($username && $date && $chdate){ 

     session_start(); 

     $mysqli = new mysqli("", "", "", ""); 

     stmt = $mysqli->prepare("INSERT INTO booking (, , , ,) 
          VALUES ('',''"); 

     $result = $stmt->execute(); 

     } 
     $stmt->close(); 
     $mysqli->close(); 
+1

你應該使用佔位符查詢而不是變量名稱。 'WHERE username =?'你實際上試圖在那裏引用變量。 –

+0

你有沒有試過echo date和cdate?他們完全平等嗎? –

+0

提示:不要使用「其他」來「重置」變量。首先用「空」值來定義它們。更清晰的代碼,並且不再需要其他語句。 –

回答

0

檢查這個

$date = date('y-m-d', strtotime($_POST['datepicker'])); 

今年將恢復爲 「17」 的2017年,嘗試這樣

$date = date('Y-m-d', strtotime($_POST['datepicker'])); 
+0

@prozcay做一個小測試。回聲所有的varieables「$ cusername,$ username,$ cdate,$ date」之前,如果條件,你會知道這些變量攜帶數據之前比較 – Tariq

+0

回聲期間$ cdate和$ data是否一樣?和$ cname和$ name文本是相同的? – Tariq

+0

@prozcay「選擇用戶名,日期從預定其中username =‘$用戶名’和日期= $日期「 – Tariq