仅在完成所有检查后才执行Update脚本

时间:2011-01-31 05:27:07

标签: php database forms comparison-operators

我有一个更新脚本,用于更新用户名,密码,电话,用户身份等。因此,假设用户决定更改他/她的电话而不是用户名。但是当他们去编辑他们的信息时,所有上述字段都出现在表格上。因此,也会提交用户想要更改的内容。所以我使用下面的代码来检测它。因此,如果字段中的用户名与从会话中提取的用户名匹配,则表示可以继续,如果没有,则打印已经使用了用户名。但问题是我必须运行此查询两次,一次是用户名,一次是用户的唯一ID。当Update脚本位于页面的底部时,它变得复杂。下面的代码将检测到它,但它们将停止回声​​。那么我如何制作它以便代码检查这些条件,然后在成功完成后它指向更新查询。

检查1:

if ($username == $_POST['username') {
  echo "Good to go";
} else {
  echo "already in use";
}

检查2:

if ($usergenid == $_POST['usergenid') {
  echo "Good to go";
} else {
  echo "already in use";
}

1 个答案:

答案 0 :(得分:1)

也许我误解了这个问题,但你能否为自己的条件筑巢?

原创

$result = null;

if($username == $_POST['username']) 
{
   if($usergenid == $_POST['usergenid'])
   {

      /* perform update to user */
      $sql = 'UPDATE users SET username = ' . $_POST['username'] . ' WHERE id = ' . $_POST['usergenid'];
      if(mysql_query($sql))
      {
         $result = 'User updated';
      }
      else
      { 
         $result = 'Update failed';
      }

   }
   else
   {
      $result = 'User id already in use';
   }
} 
else 
{
  $result = 'Username already in use';
}

return $result;

如果user_id匹配

,则更新用户名
$result = null;

if($usergenid == $_POST['usergenid'])
{
   if($username != $_POST['username']) 
   {

      /* perform update to user */
      $sql = 'UPDATE users SET username = ' . $_POST['username'] . ' WHERE id = ' . $_POST['usergenid'];
      if(mysql_query($sql))
      {
         $result = 'username updated';
      }
      else
      { 
         $result = 'update failed';
      }

   }
   else
   {
      $result = 'username is the same, no update performed';
   }
} 
else 
{
  $result = 'user id does not match';
}

return $result;