同时更新并插入三个表

时间:2015-11-03 14:47:20

标签: php mysql

我有一条需要更新的记录。如果更新成功,则应将记录插入三个不同的表中。我使用下面的代码完成了它,但是其中一个表(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="";
}

?>

3 个答案:

答案 0 :(得分:1)

  

&#34; @Fred:查看我使用mysqli_error($ connection)时生成的错误。你可以解释一下:ErrorMessage:你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在&#39; 1000.00&#39; Cr&#39;,&#39; SPL002&#39;,&#39; Ojo&附近使用正确的语法#39;,&#39; 1&#39;)&#39;在第2行 - 戴夫&#34;

看到我给你检查错误的建议所产生的错误。

您在'$loanRef

错过了引用

在您的查询中:

VALUES('$custNo','$grpid','$transDate','$loanRef , '$savAmount'...
                                                ^ right there

我建议您转移所有传入的数据。

即:

$var = mysqli_real_escape_string($connection, $_POST['var']);

并将相同的逻辑应用于所有POST阵列。

另外,正如我所说;请确保您已开始会话,因为您的问题中没有提及此问题,并且session_start();未包含在您发布的代码中。

需要使用会话在所有页面内启动会话。

使用预备语句会更好。

这是你真正应该使用的。

其他参考资料:

还要确保表格中没有任何限制。

答案 1 :(得分:0)

老兄确保你正确地逃避变量http://php.net/manual/en/mysqli.prepare.php

我会查看表名!确保它是case sesntive,也只是想知道你是否可以对你的数据库设计做些什么?似乎有很多重复的数据进入你的表。考虑一种更好的方式来组织和存储数据

答案 2 :(得分:0)

我收到了错误发送到的地方。仅仅因为我忘了在其中一个值中添加单引号。即错过报价 - 靠近$ loanRef。没有结束字符串。无论如何,我能够通过Fred nad Mark建议的错误消息声明参数检测到。正确

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

谢谢大家。