php-MYSQL更新查询无法完成

php-MYSQL更新查询无法完成,php,html,mysql,Php,Html,Mysql,我在更新配置文件信息时遇到了一点问题 现在出现问题: 我的更新查询未完全工作,电子邮件查询工作,但状态查询未工作 PHP代码 if(!empty($_POST)) { $query = "UPDATE users SET"; if(!empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) && $_POST['email'] != $_SESSION[

我在更新配置文件信息时遇到了一点问题

现在出现问题:

  • 我的更新查询未完全工作,电子邮件查询工作,但状态查询未工作
PHP代码

if(!empty($_POST)) {
  $query = "UPDATE users SET";
  if(!empty($_POST['email']) && filter_var($_POST['email'],   FILTER_VALIDATE_EMAIL) && $_POST['email'] != $_SESSION['u']['email']) {
    $s_mail = $_POST['email'];
    $row = mysql_num_rows(mysql_query("SELECT email FROM users WHERE email='$s_mail'"));
    if($row != 0) {
      header("Location: ".$l['settings']."?msg=2");
      die("REDIRECT");
    }
    $query .= " `email`='".$_POST['email']."'";
    $_SESSION['u']['email'] = $_POST['email'];
  } else if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    header("Location: ".$l['settings']."?msg=3");
    die("REDIRECT");
  }
  //PROBLEM starts here
  if(!empty($_POST['status'])) {
    $query .= ",`status`='".$_POST['status']."'";
    $_SESSION['u']['status'] = $_POST['status'];
  }
  //AND ends here
  $query .= " WHERE id='".$_SESSION['u']['id']."'";
  mysql_query($query);
  header("Location: ".$l['settings']."?msg=1");
  die("REDIRECT");
}
HTML表单

<input maxlength="200" type="text" class="form-control" placeholder="Status" name="status" value="<?php //ECHO STATUS ?>" />

在您的$query上

$query .= ",`status`='".$_POST['status']."'";
删除逗号,使其像这样

$query .= " `status`='".$_POST['status']."'";

您需要将电子邮件条件的标志设置为

$flag = FALSE;// set a flag
if (!empty($_POST)) {
    if (!empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) && $_POST['email'] != $_SESSION['u']['email']) {
        $s_mail = $_POST['email'];
        $row = mysql_num_rows(mysql_query("SELECT email FROM users WHERE email='$s_mail'"));
        if ($row != 0) {
            header("Location: " . $l['settings'] . "?msg=2");
            die("REDIRECT");
        }
        $flag = TRUE;// set to true if success

        $_SESSION['u']['email'] = $_POST['email'];
    } else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        header("Location: " . $l['settings'] . "?msg=3");
        die("REDIRECT");
    }

    //PROBLEM starts here
    if (!empty($_POST['status'])) {
        $query = "UPDATE users SET";
        $query .= " `status`='" . $_POST['status'] . "'";
        if ($flag) {// if true then apply email condition
            $query .= ",`email`='" . $_POST['email'] . "'";
        }
        $query .= " WHERE id='" . $_SESSION['u']['id'] . "'";
        $_SESSION['u']['status'] = $_POST['status'];
    }
    //AND ends here

    mysql_query($query);
    header("Location: " . $l['settings'] . "?msg=1");
    die("REDIRECT");
}
注意:-不推荐使用mysql,而使用mysqli或pdo


@丹尼洛。只有状态不工作?你能给我打印$u POST['status']的值吗。是否检查可能使查询字符串像“this one”一样无效的符号?查找每次查询时不会插入电子邮件查询的错误,因为查询是
UPDATE users SET,status='TEST'WHERE id='1'
@DanielO。因为你知道,如果你打算让不受信任的人访问它(比如说,把它放在互联网上),那么看看这个总是相关的问题。这可能会为你以后省去很多麻烦。