Lisa
Lisa

Reputation: 65

Query is executing twice

On my website I am trying to execute two queries in one but both are executing twice.

When I create a member I got two the same members in the database for the first query.

The second query isn't doing +1 but twice +1 so it makes +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();
    }

functions:

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);
}       

Upvotes: 1

Views: 427

Answers (1)

Filo
Filo

Reputation: 2839

Let's make a simple debug

replace you code with this and you should be able to understand more about the function call.

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();

}

and the function

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';
    }

Another (better) way to make a simple debug is calling debug_print_backtrace inside AddAsGroupMember

Upvotes: 1

Related Questions