是否可以使用 WHERE 电子邮件 = $_SESSION[“电子邮件”] 更新表


Is it possible to update a table using WHERE email = $_SESSION['email']

我想更新一个已经存在的表,它只有电子邮件,我想添加名字和姓氏 这段代码可以这样做吗?

     UPDATE table
     SET fname='$fname', lname='$lname'
      WHERE email= '$_SESSION['email'].';

或者我也可以使用这个

     $sql="INSERT INTO            $tbl_name(fname, lname)VALUES( '$fname, $lname')"  WHERE email= '$_SESSION['email'].';

您的UPDATE存在语法错误(撇号问题。 INSERT不会更新,而是乘以行。这就是你想要not的。这是我建议的查询:

$sql="UPDATE table SET fname='$fname', lname='$lname' WHERE email='".$_SESSION["email"]."'" ;

修正你的引号,如下所示:

$sql="INSERT INTO $tbl_name(email) VALUES ( '" . $email . "') WHERE email = '" .  $_SESSION['email'] . "'";

尝试如下: 在简单的更新查询的情况下

$user_email = $_SESSION['email'];
$fname      = 'Thierry';
$lname      = 'Henry';

UPDATE table
     SET fname='$fname', lname='$lname'
      WHERE email= '$user_email';

插入在这里不是一个好主意。它可能会重复您的记录。

如果你想比 Go 更具体,就像这样:只提供你的一般语法。没有实时语法:

    $user_email = $_SESSION['email'];
    $fname      = 'Thierry';
    $lname      = 'Henry';
$check_user = 'SELECT * FROM table WHERE email = "user_email"';
if($check_user)
{
  YOUR UPDATE QUERY
}
else
{
 YOUR INSERT QUERY
}

如果您使用的是mysql_函数,您还应该转义输入:

$email = mysql_real_escape_string($_SESSION['email']);

白痴免责声明:这并不意味着我建议使用mysql_*函数。请改用mysqliPDO

还应检查查询中的NULL值和空值。

$sql = "REPLACE INTO " . $table . "
        SET email='" . $email . "'
        WHERE email='" .  $email . "'
          AND email IS NOT NULL
          AND email != ''";

从 http://dev.mysql.com/doc/refman/5.0/en/replace.html:

REPLACE 的工作方式与 INSERT 完全相同,只是如果 表的值与主键或唯一键的新行相同 索引,则在插入新行之前删除旧行。

如果这不完全合适,请不要投反对票,只需使用相同的语法使用 INSERTUPDATE