是否可以使用WHERE email = $ _SESSION ['email']更新表格

时间:2013-09-18 05:26:44

标签: php sql

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

     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'].';

4 个答案:

答案 0 :(得分:0)

修正你的报价,如下:

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

答案 1 :(得分:0)

尝试这样:如果是简单的更新查询

$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
}

答案 2 :(得分:0)

您的UPDATE语法错误(撇号问题。) INSERT不会更新,而是会增加行数。这是你想要的not。 这是我建议的查询:

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

答案 3 :(得分:-1)

如果您使用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完全相同,只是如果在一个旧行中   table与PRIMARY KEY或UNIQUE的新行具有相同的值   index,在插入新行之前删除旧行。

如果不完全适合请不要downvote,只需使用INSERTUPDATE,然后使用相同的语法。