我想更新一个已经存在的表,它只有电子邮件,我想添加名字和姓氏,这段代码是否可以这样做?
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'].';
答案 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_*
个功能。请改用mysqli
或PDO
。
您还应该检查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,只需使用INSERT
或UPDATE
,然后使用相同的语法。