Php 同时更新并插入到三个表中

Php 同时更新并插入到三个表中,php,mysql,Php,Mysql,我有一个记录需要更新。如果更新成功,则应将记录插入三个不同的表中。我是用下面的代码做的,但是其中一个表(tab_loan_targetsave)没有插入。我需要第三只眼睛来观察这一点,因为我在寻找问题所在时经历了很多痛苦。 我需要帮助。同时,如果可能的话,我欢迎更好的方法 <?php if(isset($_POST["savebtn"])){ $custNo = $_POST["custid"]; $transDate = $_POST["transDate"]; $grpid = $_P

我有一个记录需要更新。如果更新成功,则应将记录插入三个不同的表中。我是用下面的代码做的,但是其中一个表(tab_loan_targetsave)没有插入。我需要第三只眼睛来观察这一点,因为我在寻找问题所在时经历了很多痛苦。 我需要帮助。同时,如果可能的话,我欢迎更好的方法

<?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')");