1

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

     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

4 回答 4

0

Your UPDATE has a syntax error (problem with apostrophes.) INSERT will not update but multiply rows. That is not what you want to have. Here is my suggested query:

$sql="UPDATE table SET fname='$fname', lname='$lname' WHERE email='".$_SESSION["email"]."'" ;
于 2013-09-18T06:08:17.980 回答
0

修正你的报价,像这样:

$sql="INSERT INTO $tbl_name(email) VALUES ( '" . $email . "') WHERE email = '" .  $_SESSION['email'] . "'";
于 2013-09-18T05:29:04.387 回答
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
}
于 2013-09-18T06:05:07.927 回答
-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 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行。

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

于 2013-09-18T06:45:15.320 回答