查询正在执行两次

时间:2014-07-27 21:14:48

标签: php mysql sql function

在我的网站上,我试图在一个中执行两个查询,但两个查询都执行了两次。

当我创建一个成员时,我在数据库中为第一个查询获得了两个相同的成员。

第二个查询不是+1而是+1,所以它会+2

if (isset($_POST["Accept"])) {
    try {
        $group_id = mysql_real_escape_string($_POST["group_id"]);
        $groupinfo = $group->GetGroupInfoByGroupId($group_id);
        $groupname = $groupinfo['group_name'];

        $requestnumber = mysql_real_escape_string($_POST['acceptID']);

        $groupinvitation->Invitation_group_name = mysql_real_escape_string($groupname);
        $groupinvitation->AddAsGroupMember($number, $group_id);
        $r->UpdateParticipatedGroups($StatisticsRows, $participatedGroups);
        $groupinvitation-> AcceptGroupRequest($requestnumber);

        $feedback = "Awesome, You just added a friend!";

    } catch(Exception $e) {
        $feedback = $e -> getMessage();
    }

功能:

public function AddAsGroupMember($number, $group_id)
{
    $db = new Db();
    $insert = "
        INSERT INTO tblgroup_member(  
            group_id,
            user_id,
            group_name

      ) VALUES (

            '" . $db->conn->real_escape_string($group_id) . "',
            '" . $db->conn->real_escape_string($number) . "',
            '" . $db->conn->real_escape_string($this->Invitation_group_name) . "'   
      )";

    $db->conn->query($insert);
    // update number of members
    $select = "UPDATE tblgroups SET group_members =  group_members + 1 WHERE " .  $group_id . " = group_id";    
    $db->conn->query($select);
}       

1 个答案:

答案 0 :(得分:1)

让我们进行简单的调试

用这个替换你的代码,你应该能够更多地了解函数调用。

if (isset($_POST["Accept"])) {
    try {
    echo 'main 0\n'; 
    $group_id = mysql_real_escape_string($_POST["group_id"]);
    echo 'main 1\n';
    $groupinfo = $group->GetGroupInfoByGroupId($group_id);
    echo 'main 2\n';
    $groupname = $groupinfo['group_name'];

    $requestnumber = mysql_real_escape_string($_POST['acceptID']);

    $groupinvitation->Invitation_group_name = mysql_real_escape_string($groupname);
    echo 'main 3\n';
    $groupinvitation->AddAsGroupMember($number, $group_id);
    echo 'main 4\n';
    $r->UpdateParticipatedGroups($StatisticsRows, $participatedGroups);
    echo 'main 5\n';
    $groupinvitation-> AcceptGroupRequest($requestnumber);
    echo 'main 6\n';

    $feedback = "Awesome, You just added a friend!";


} catch(Exception $e) {
    $feedback = $e -> getMessage();

}

和功能

public function AddAsGroupMember($number, $group_id)
    {
            echo 'func 1\n';
            $db = new Db();
            $insert = "INSERT INTO tblgroup_member(


                            group_id,
                            user_id,
                            group_name


                      ) VALUES (

                            '" . $db->conn->real_escape_string($group_id) . "',
                            '" . $db->conn->real_escape_string($number) . "',
                            '" . $db->conn->real_escape_string($this->Invitation_group_name) . "'   



                      )";

        $db->conn->query($insert);
            echo 'func 2\n';
// update number of members
        $select = "UPDATE tblgroups SET group_members =  group_members + 1 WHERE " .  $group_id . " = group_id";    
    $db->conn->query($select);
    echo 'func 3\n';
    }

进行简单调试的另一种(更好的)方法是在AddAsGroupMember中调用debug_print_backtrace

相关问题