如何确定是否对保存操作执行插入或更新?

时间:2015-11-12 12:46:14

标签: php mysql post

我在用户的个人资料页面中遇到问题。

我有一个名为" profiles" (ID,UID,名字,姓氏,状态) 当用户登录并转到编辑个人资料时,他会将他的信息同意。

所以我的脚本必须将他的信息添加到表(配置文件),因为它们是空的!但如果个人资料已经完成,那就意味着他会寻找更新他的个人资料而不是添加。我试图完成这个页面,但这让我心疼。

$profile = sbr_get_user_profile_by_id($uid);
if($profile == NULL)
{
    $result =     sbr_add_profiles($uid,trim($_POST['firstname']),trim($_POST['lastname']),trim($_POST['state']));
    sbr_db_close();
    if($result){
        $_SESSION['success'] = 'success add';
        header('location: modifyProfile.php?id='.$uid);
        die();
     }
     else
         die('no add');
}

$result = sbr_update_profile_users($uid,trim($_POST['firstname']),trim($_POST['lastname']),trim($_POST['state'])));
sbr_db_close();

我正在寻找更好的主意,因为我不喜欢这样。

1 个答案:

答案 0 :(得分:1)

更改您的MySQL查询。而不是:

UPDATE table......

使用它:

INSERT INTO table (id,uid,firstname,lastname,state)
VALUES($id,$uid,$firstname,$lastname,$state)
ON DUPLICATE KEY UPDATE
id=VALUES(id), uid=VALUES(uid), firstname=VALUES(firstname), lastname=VALUES(lastname),state=VALUES(state)

你必须在mysql表的firstname,lastname上设置组合的唯一键才能获得上述查询的效果。

通过上面的查询,将插入一个新的firstname和lastname,如果找到相同的firstname和lastname,则行将被更新。但由于可能有多个人具有相同的名字和姓氏,您还必须在其他列上设置唯一键,例如名字,姓氏,电话栏上的唯一键。

我认为,在您的情况下,您应该在uid列上设置唯一键,如果每个用户都不同。