2016-01-04 77 views
3

你好我有一個問題,當我插入一個值爲零。PHP:不能插入值爲0(零)

當我試圖插入[評分]字段中爲零值,使其恢復我對這個結果

ss

額外

信息: [評分]字段的數據類型爲int

這裏是我的代碼:

<?php 

    require("config.inc.php"); 
    if(!empty($_POST)){ 

      if(empty($_POST['quiz_list_id']) || empty($_POST['stud_name']) || empty($_POST['score']) || empty($_POST['term']) || empty($_POST['quiz_date'])){ 
       $response["Success"] = 0; 
       $response["Message"] = "Please complete all fields."; 
       die(json_encode($response)); 
      } 

      $query = "SELECT 3 FROM tb_quiz WHERE quiz_list_id = :quiz_list_id AND stud_name = :stud_name AND term = :term"; 
      $query_params = array(
            ':quiz_list_id'=> $_POST['quiz_list_id'], 
            ':stud_name'=> $_POST['stud_name'], 
            ':term'=> $_POST['term'] 
            ); 

      try{ 
       $stmt = $db->prepare($query); 
       $result = $stmt->execute($query_params); 
      } 
      catch(PDOException $ex){ 
       $response["Success"] = 0; 
       $response["Message"] = "Database Error. Please Try Again..."; 
       die(json_encode($response)); 
      } 

      $row = $stmt->fetch(); 
       if($row){ 
        $response["Success"] = 0; 
        $response["Message"] = "I'm sorry, this Record is already existed."; 
        die(json_encode($response)); 
       } 

       $query = "INSERT INTO tb_quiz (quiz_list_id, stud_name, score, equivalent, term, quiz_date) VALUES(:quiz_list_id, :stud_name, :score, :equivalent, :term, :quiz_date)"; 
       $query_params = array(
             ':quiz_list_id'=> $_POST['quiz_list_id'], 
             ':stud_name' => $_POST['stud_name'], 
             ':score' => $_POST['score'], 
             ':equivalent' => $_POST['equivalent'], 
             ':term'=> $_POST['term'], 
             ':quiz_date'=> $_POST['quiz_date'] 

            ); 
      try{ 
         $stmt = $db->prepare($query); 
         $result = $stmt->execute($query_params); 
       } 
       catch(PDOException $ex){ 
        $response["Success"] = 0; 
        $response["Message"] = "Database Error1. Please Try Again..."; 
        die(json_encode($response)); 
       } 
        $response["Success"] = 1; 
        $response["Message"] = "Quiz Successfully Recorded."; 
        echo json_encode($response); 

    }else{ 
?> 

     <form action="addQuiz.php" method="post"> 
     Quiz List: <input type="text" name="quiz_list_id"><br> 
     Stud Name: <input type="text" name="stud_name"><br> 
     Score: <input type="text" name="score"><br> 
     Equivalent: <input type="text" name="equivalent"><br> 
     Term: <input type="text" name="term"><br> 
     Date: <input type="text" name="quiz_date"><br> 
     <input type="submit"> 
     </form> 
     <?php 
    } 


?> 

回答

3

empty()功能考慮零空的,所以它返回TRUE。

以下的事情被認爲是空的:

  • 「」(空字符串)
  • 0(0作爲整數)
  • 0.0(0爲float)
  • 「0」(0作爲字符串)
  • NULL
  • FALSE
  • array()(空陣列)
  • $ var; (變量聲明,但沒有一個值)

這裏是固定碼: 你可以使用這個條件:

$_POST['score'] == "" 

下面是完整的代碼

<?php 

    require("config.inc.php"); 
    if(!empty($_POST)){ 

      if(empty($_POST['quiz_list_id']) || empty($_POST['stud_name']) || $_POST['score'] == "" || empty($_POST['term']) || empty($_POST['quiz_date'])){ 
       $response["Success"] = 0; 
       $response["Message"] = "Please complete all fields."; 
       die(json_encode($response)); 
      } 

      $query = "SELECT 3 FROM tb_quiz WHERE quiz_list_id = :quiz_list_id AND stud_name = :stud_name AND term = :term"; 
      $query_params = array(
            ':quiz_list_id'=> $_POST['quiz_list_id'], 
            ':stud_name'=> $_POST['stud_name'], 
            ':term'=> $_POST['term'] 
            ); 

      try{ 
       $stmt = $db->prepare($query); 
       $result = $stmt->execute($query_params); 
      } 
      catch(PDOException $ex){ 
       $response["Success"] = 0; 
       $response["Message"] = "Database Error. Please Try Again..."; 
       die(json_encode($response)); 
      } 

      $row = $stmt->fetch(); 
       if($row){ 
        $response["Success"] = 0; 
        $response["Message"] = "I'm sorry, this Record is already existed."; 
        die(json_encode($response)); 
       } 

       $query = "INSERT INTO tb_quiz (quiz_list_id, stud_name, score, equivalent, term, quiz_date) VALUES(:quiz_list_id, :stud_name, :score, :equivalent, :term, :quiz_date)"; 
       $query_params = array(
             ':quiz_list_id'=> $_POST['quiz_list_id'], 
             ':stud_name' => $_POST['stud_name'], 
             ':score' => $_POST['score'], 
             ':equivalent' => $_POST['equivalent'], 
             ':term'=> $_POST['term'], 
             ':quiz_date'=> $_POST['quiz_date'] 

            ); 
      try{ 
         $stmt = $db->prepare($query); 
         $result = $stmt->execute($query_params); 
       } 
       catch(PDOException $ex){ 
        $response["Success"] = 0; 
        $response["Message"] = "Database Error1. Please Try Again..."; 
        die(json_encode($response)); 
       } 
        $response["Success"] = 1; 
        $response["Message"] = "Quiz Successfully Recorded."; 
        echo json_encode($response); 

    }else{ 
?> 

     <form action="addQuiz.php" method="post"> 
     Quiz List: <input type="text" name="quiz_list_id"><br> 
     Stud Name: <input type="text" name="stud_name"><br> 
     Score: <input type="text" name="score"><br> 
     Equivalent: <input type="text" name="equivalent"><br> 
     Term: <input type="text" name="term"><br> 
     Date: <input type="text" name="quiz_date"><br> 
     <input type="submit"> 
     </form> 
     <?php 
    } 


?> 
+0

我想解釋爲什麼你的代碼能夠正常工作,而原文不會(即錯在哪裏)會更好地回答你的問題。 – Burki

+1

@Burki謝謝你,我會解釋它。 –

+0

gotcha :)謝謝先生,它的工作現在:) – CallMeJeo

2

0所有的變化 - 無論是0作爲整數並且"0"作爲字符串被認爲是empty。因此empty("0")將返回true。你的情況,我想你你的價值觀與""(空字符串)更好地比較

if ($_POST['score'] != "") // for example 
1

您已經使用empty()檢查$_POST['score']其定義就是 -

確定變量是否被認爲是空着。一個變量是 ,如果它不存在或者其值等於FALSE,則認爲它是空的。 如果變量不存在,則empty()不會生成警告。

您應該使用isset()代替empty()或使用參數作爲字符串象下面這樣:

empty("$_POST['score']")