将字段更新为 1


update field by 1

当想要在提交此表单时将字段completed_status更新为1时,它保持在0。查询$submission是用户表的更新。这是我一直在使用的代码:

$user_id = intval($_SESSION['user_id']);
if (isset($_POST['doPersonal'])) {
    if (empty($err)) {
        $Sex = mysql_real_escape_string($_POST['Sex']);
        $Second_Nationality = mysql_real_escape_string($_POST['Second_Nationality']);
        $Birth_Place = mysql_real_escape_string($_POST['Birth_Place']);
        $Birth_Country = mysql_real_escape_string($_POST['Birth_Country']);
        $children = mysql_real_escape_string($_POST['children']);
        $the_query =   "INSERT INTO personal (user_id, Sex, Second_Nationality, 
Birth_Place, Birth_Country, children)
VALUES ('$user_id', '$Sex', '$Second_Nationality','$Birth_Place', '$Birth_Country',
'$children')
ON DUPLICATE KEY UPDATE Sex=VALUES(Sex), Second_Nationality=VALUES(Second_Nationality),
Birth_Place=VALUES(Birth_Place) , children=VALUES(children)";

        // query is ok?
        if (mysql_query($the_query, $link) ){
            // redirect to user profile
            header('Location: myaccount.php?id=' . $user_id);
            $submission= "update users set completed_status=completed_status+1 where 
id='$_SESSION[user_id]'";
        }
    }
}

}

从上面的代码中我们可以看到您在update query之前redirecting页面,因此请将其修改为,

if (mysql_query($the_query, $link) ){
           $submission= "update users set completed_status=completed_status+1 where 
id='$_SESSION[user_id]'";
           mysql_query($submission,$link);  // to execute the update query              
          // redirect to user profile
          header('Location: myaccount.php?id=' . $user_id);

}

你还没有调用mysql_query:

$submission= "update users set completed_status=completed_status+1 where 
id='$_SESSION[user_id]'";
mysql_query($submission, $link);

我猜你忘了运行查询。

    if (mysql_query($the_query, $link)){
        $submission= "update users set completed_status=completed_status+1 where id='$_SESSION[user_id]'";
        mysql_query($submission, $link);
        // redirect to user profile
        header('Location: myaccount.php?id=' . $user_id);
    }

请注意,重定向不会影响任何事情(即使其他人在这里告诉您)。出于习惯,我只是把它放在查询之后。重定向后的代码仍将运行,只是在浏览器中看不到输出。如果要在重定向后停止执行,可以使用exit

试试这个作为你的最后一个if块:

if (mysql_query($the_query, $link)) {
  $query = 'update users set completed_status=completed_status+1 where id = ' . $_SESSION[user_id];
  mysql_query($query, $link);
  // redirect to user profile
  header('Location: myaccount.php?id=' . $user_id);
}

但是,您正在使用$user_id$_SESSION['user_id']是相当模棱两可的。这是两种不同的user_id吗?