php - PHP pdo查询有时插入两次
问题描述
我有一个通过 php 提交数据的 android 应用程序,但有时在我提交数据时数据会插入两次。我确定问题不在应用程序上,因为一旦我按下按钮,按钮就会被禁用。请帮我找出我的错误。谢谢!以下是插入的数据:
以下是我的查询:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$area = $_POST['area'];
$date = $_POST['date'];
$batch = $_POST['batch'];
$workerName = $_POST['workerName'];
$remarks = $_POST['remarks'];
$time = $_POST['time'];
$tank = $_POST['tank'];
$sid= '';
$submissionDateTime = $_POST['submissionDateTime'];
require_once 'connectdb.php';
$stmt = $conn ->prepare("SELECT DISTINCT sid FROM feedingforms WHERE area = :area AND tank = :tank AND date = :date AND batch = :batch AND time = :time");
$stmt->bindParam(":area", $_POST['area']);
$stmt->bindParam(":tank", $_POST['tank']);
$stmt->bindParam(":date", $_POST['date']);
$stmt->bindParam(":batch", $_POST['batch']);
$stmt->bindParam(":time", $_POST['time']);
$stmt->execute();
$stmt->fetch();//fecth
switch ($stmt->rowCount() > 0){
case "0":
$stmt2 = $conn->prepare("INSERT INTO feedingforms(sid, area, date, batch, workerName, submissionDateTime, remarks, time, tank) VALUES(:sid, :area, :date,:batch,:workerName,:submissionDateTime, :remarks, :time,:tank)");
$stmt2->bindValue(":sid", $sid);
$stmt2->bindValue(":area", $area);
$stmt2->bindValue(":date", $date);
$stmt2->bindValue(":batch", $batch);
$stmt2->bindValue(":workerName", $workerName);
$stmt2->bindValue(":submissionDateTime", $submissionDateTime);
$stmt2->bindValue(":remarks", $remarks);
$stmt2->bindValue(":time", $time);
$stmt2->bindValue(":tank", $tank);
if ($stmt2->execute()) {
$result["success"]= "1";
$result["message"] = "success";
echo json_encode($result);
$conn = null;
exit;
break;
}else{
$result["success"]= "0";
$result["message"] = "error";
echo json_encode($result);
$conn = null;
exit;
break;
}
default:
$result["success"]= "2";
$result["message"] = "duplicate";
echo json_encode($result);
exit;
$conn = null;
}
}
?>
解决方案
推荐阅读
- go - 为什么不能在赋值中使用 (type func(string)) 作为类型 func(interface{})
- jenkins - Jenkins hudson.TcpSlaveAgentListener$ConnectionHandler 运行连接失败
- apache-flink - Flink 中 KeyedBroadcastProcessFunction 的键控状态如何管理?
- javascript - 如何正确让我的按钮执行我的 javascript?
- firebase - 使用动态名称创建新的 Firebase 存储桶
- excel - 将超链接(Web)添加到 Outlook 电子邮件
- linux - LFS CoreUtils-8.30 失败,缺少 aclocal-1.15
- excel - Excel VBA - 集合 = 没有什么比创建集合要长 100 倍
- java - 为什么 Flink SQL 对所有表都使用 100 行的基数估计?
- c# - 圆弧图形质量