2016-01-04 4 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 как поплавок)
  • "0" (0 в виде строки)
  • NULL
  • ЛОЖЬ
  • 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.

So empty("0") вернет true. В вашем случае я полагаю, вы бы лучше сравнить значения с "" (пустой строкой)

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

Вы использовали empty() проверить $_POST['score'] и его определение -

Определить, является ли переменным считаются быть пустым. Переменная считается пустой, если она не существует или ее значение равно FALSE. empty() не генерирует предупреждение, если переменная не существует.

Вы должны использовать isset() вместо empty() или использовать параметр в виде строки, как показано ниже:

empty("$_POST['score']") 
Смежные вопросы