我在用户的个人资料页面中遇到问题。
我有一个名为" 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();
我正在寻找更好的主意,因为我不喜欢这样。
答案 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列上设置唯一键,如果每个用户都不同。