Php 同时更新并插入到三个表中
我有一个记录需要更新。如果更新成功,则应将记录插入三个不同的表中。我是用下面的代码做的,但是其中一个表(tab_loan_targetsave)没有插入。我需要第三只眼睛来观察这一点,因为我在寻找问题所在时经历了很多痛苦。 我需要帮助。同时,如果可能的话,我欢迎更好的方法Php 同时更新并插入到三个表中,php,mysql,Php,Mysql,我有一个记录需要更新。如果更新成功,则应将记录插入三个不同的表中。我是用下面的代码做的,但是其中一个表(tab_loan_targetsave)没有插入。我需要第三只眼睛来观察这一点,因为我在寻找问题所在时经历了很多痛苦。 我需要帮助。同时,如果可能的话,我欢迎更好的方法 <?php if(isset($_POST["savebtn"])){ $custNo = $_POST["custid"]; $transDate = $_POST["transDate"]; $grpid = $_P
<?php
if(isset($_POST["savebtn"])){
$custNo = $_POST["custid"];
$transDate = $_POST["transDate"];
$grpid = $_POST["custgrp"];
$contAmount =$_POST["amtCont"];
$amount = $_POST["amount"];
$disAmount =$_POST["disbAmt"];
$savAmount =$_POST["savAmt"];
$intAmount =$_POST["intAmt"];
$postedBy = $_SESSION["staffid"];
//$preApproved =$_POST["preAmount"];
$loanRef = $_POST["refid"];
$st = "Approved";
$appDate = date("Y-m-d H:i:s");
$appBy = $_SESSION['staffid'];
$counter = 1;
$locate = $_SESSION['location'];
$insure = $_POST["insuAmt"];
$dis = $_POST["DisAmt"];
$update = mysqli_query($connection,"UPDATE tab_loan_request SET approval_status='$st',approvalDate='$appDate',approvedBy='$appBy',loanRef='$loanRef' WHERE custid='$custNo' AND RepayStatus='1'");
if($update && mysqli_affected_rows($connection)>0){
$insertTar = mysqli_query($connection,"INSERT INTO tab_loan_targetsave(custid,grpid,transactionDate,loanRef,savingAmt,status,postedBy,location,appStatus)
VALUES('$custNo','$grpid','$transDate','$loanRef,'$savAmount','Cr','$postedBy','$locate','1')");
$insertInt = mysqli_query($connection,"INSERT INTO tab_loan_interest(custid,requestAmt,transactionDate,interestFees,postedBy,loanRef,InsuranceFees,DisasterFees)VALUES(
'$custNo','$amount','$transDate','$intAmount','$postedBy','$loanRef','$insure','$dis')");
//if($insertInt){
//}if($insertTar){
$insertSav = mysqli_query($connection,"INSERT INTO tab_loan_saving(custid,grpid,transactionDate,loanRef,loanAmount,savingAmt,status,postedBy,location,appStatus)
VALUES('$custNo','$grpid','$transDate','$loanRef','$amount','0','Cr','$postedBy','$locate','1')");
}//first if
if($insertSav){
echo "<span style='font-weight:bold;color:red;'>"." Application Approval is successful!"."</span>";
}else{
//Unable to save
echo "<span style='font-weight:bold;color:black;>"."Error! Application Approval not Successful!"."</span>";
}
}else{
$custid = "";$saving=0.00;$st="";
$transDate = "";
$grpid = "";
$amount = "";
$postedBy = "";$loanRef="";
}
?>
伙计,确保正确地转义变量
我会检查表名!请确保它是case-sentive,也只是想知道是否可以对数据库设计做些什么?似乎有很多重复数据进入了您的表中。考虑一种更好的方式来组织和存储这些数据
“@Fred:看到我使用mysqli_error($connection)时产生的错误。请您解释一下:ErrorMessage:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第2行的'1000.00'、'Cr'、'SPL002'、'Ojo'、'1')附近使用的正确语法–Dave”
看到我给你的检查错误的建议所产生的错误
您缺少此处的报价“$loanRef
在您的查询中:
VALUES('$custNo','$grpid','$transDate','$loanRef , '$savAmount'...
^ right there
我建议您避开所有传入的数据
即:
并将相同的逻辑应用于所有POST数组
另外,正如我所说;确保您已经开始了会话,因为您的问题和session_start()中没有提到这一点代码>未包含在您发布的代码中
会话需要在使用会话的所有页面中启动
使用事先准备好的语句会更好
这才是你真正应该使用的
其他参考资料:
还要确保您的表中没有任何约束。我找到了错误的来源。只是因为我忘了在其中一个值中添加一个引号。ie缺少报价-接近$loanRef。没有结束字符串。无论如何,我能够通过错误消息检测到,如弗雷德·纳德·马克所建议的,stated参数。正确的
$insertTar = mysqli_query($connection,"INSERT INTO tab_loan_targetsave(custid,grpid,transactionDate,loanRef,savingAmt,status,postedBy,location,appStatus)
VALUES('$custNo','$grpid','$transDate','$loanRef','$savAmount','Cr','$postedBy','$locate','1')");
谢谢大家。查询中出现了哪些错误?在代码中添加一些错误处理,以找出。。。。。信不信由你,错误消息实际上可以告诉你发生了什么wrong@Mark面包师相信我,它正在成功地将记录插入除第一条记录外的所有其他两条记录中。另外,我通过评论另外两个来隔离它。但是它不是插入的,也没有错误。请参考以下链接,并将其应用到您的代码中。和$update=mysqli\u query($connection),“update…”
-if($update&&mysqli\u impact\u rows($connection)>0)
很可能失败,因此您需要找出原因。请检查错误,正如我前面所说的。确保会话也已启动。@Fred:请参阅我使用mysqli_error($connection)时生成的错误。请您解释一下:ErrorMessage:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第2行“1000.00”、“Cr”、“SPL002”、“Ojo”、“1”)附近使用的正确语法。这很糟糕。我花了这么多时间编写了这篇文章。
$insertTar = mysqli_query($connection,"INSERT INTO tab_loan_targetsave(custid,grpid,transactionDate,loanRef,savingAmt,status,postedBy,location,appStatus)
VALUES('$custNo','$grpid','$transDate','$loanRef','$savAmount','Cr','$postedBy','$locate','1')");