PHP:无法插入值0(零)

时间:2016-01-04 08:42:58

标签: php

你好我们在插入值为零时遇到问题。

当我尝试在[score]字段中插入零值时,它会返回此结果

ss

其他信息: [score]字段的数据类型为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 个答案:

答案 0 :(得分:2)

empty()函数认为为零,所以它返回TRUE。

以下内容被视为空白:

  • &#34;&#34; (空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • &#34; 0&#34; (0作为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • $变种; (声明的变量,但没有值)

这里是固定代码: 你可以使用这个条件:

$_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
    }


?>

答案 1 :(得分:1)

0的所有变体 - 0整数和"0"字符串都被视为empty

因此empty("0")将返回true。在您的情况下,我认为您最好将您的值与""(空字符串)

进行比较
if ($_POST['score'] != "") // for example

答案 2 :(得分:1)

您已使用empty()检查$_POST['score'],其定义为 -

  

确定变量是否为空。变量是   如果它不存在或者其值等于FALSE则认为为空。   如果变量不存在,empty()不会生成警告。

您应该使用isset()代替empty()或使用参数作为字符串,如下所示:

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