我想更新一个已经存在的表,它只有电子邮件,我想添加名字和姓氏 这段代码可以这样做吗?
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_*
函数。请改用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 完全相同,只是如果 表的值与主键或唯一键的新行相同 索引,则在插入新行之前删除旧行。
如果这不完全合适,请不要投反对票,只需使用相同的语法使用 INSERT
或 UPDATE
。