在我的网站上,我试图在一个中执行两个查询,但两个查询都执行了两次。
当我创建一个成员时,我在数据库中为第一个查询获得了两个相同的成员。
第二个查询不是+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);
}
答案 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