你好我们在插入值为零时遇到问题。
当我尝试在[score]字段中插入零值时,它会返回此结果
其他信息: [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
}
?>
答案 0 :(得分:2)
empty()
函数认为为零,所以它返回TRUE。
以下内容被视为空白:
这里是固定代码: 你可以使用这个条件:
$_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']")