SQL更新未提交

时间:2014-11-30 02:49:36

标签: mysql commit

我有一个奇怪的问题,但我不明白发生了什么。我创建了一个函数来更新表(用户)中的三列(end_plan_date,balance和server),并在另一个表中更新2个列。

由于某种原因,我的上次更新(用户表的列服务器)未提交( $ query = mysql_query(" UPDATE用户SET服务器=' $ serv' WHERE电子邮件=' $ subemail'"); )除非我给出其他两个值中的一个值($ subamt或$ subday)。

你知道为什么这个查询没有用我解析的服务器值更新用户表吗?

function addBalance($ subemail,$ subamt,$ subday,$ userid,$ serv){

$q = "SELECT * FROM user WHERE email = '$subemail'";

$result = mysql_query($q, $this->connection);

$dbarray = mysql_fetch_array($result);

$endplan_date=$dbarray['end_plan_date'];

if($subday >0){

    if($endplan_date=="0000-00-00" ){ 

        $endplan_date = date('Y-m-d');

        $new_endplan_date = date('Y-m-d',strtotime($endplan_date . "+".$subday." days"));

    }else{

        $new_endplan_date = date('Y-m-d',strtotime($endplan_date . "+".$subday." days"));

    }

    $query = mysql_query("UPDATE user SET end_plan_date='$new_endplan_date' WHERE email='$subemail'");
    $recdate=gmdate('Y-m-d H:i:s');
    $q = "INSERT INTO com_gest(recdate,userid,type,recvalue) VALUES ('$recdate','$userid','Plan Date','$subday')";
    mysql_query($q, $this->connection);
}
if($subamt >0){
    $query = mysql_query("UPDATE user SET balance=balance+".$subamt." WHERE email='$subemail'");
    $recdate=gmdate('Y-m-d H:i:s');
    $q = "INSERT INTO com_gest(recdate,userid,type,recvalue) VALUES '$recdate','$userid','Balance','$subamt')";
    mysql_query($q, $this->connection);
}
$query = mysql_query("UPDATE user SET server='$serv' WHERE email='$subemail'");
return 0;

}

2 个答案:

答案 0 :(得分:0)

在您的代码中,您无法直接使用

$endplan_date=$dbarray['end_plan_date'];

用于获取此变量,您必须使用while循环

while($dbarray = mysql_fetch_array($result);) {

   $endplan_date=$dbarray['end_plan_date'];
}

答案 1 :(得分:0)

调用此函数时出现问题。