【发布时间】:2015-10-01 21:58:27
【问题描述】:
我希望会员能够在他们的个人资料中添加更多信息(位置、故事),并在需要时更新他们的密码。
为此,我使用以下 sn-p:
$query = mysql_query("
INSERT INTO
members (location, story)
VALUES
('$location', '$story')
WHERE
username='$user'
ON DUPLICATE KEY UPDATE
hash = '$password',
location='$location',
story='$story'
");
这不适用于“WHERE”部分,但如果我将其删除,则数据只会填充到空记录中,而不是用户记录。如何正确使用此 sn-p 中的 WHERE 部分,从而更新正确的用户配置文件?
我在互联网和这个网站上上下搜索过,但没有找到一个单一的解决方案,这让我很惊讶,因为这似乎是一个很常见的问题?
有人知道如何解决这个问题吗?
提前致谢!
【问题讨论】:
-
WHERE在此上下文中无效。为了使ON DUPLICATE KEY工作,username字段要么需要是主键,要么是UNIQUE索引。 dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html -
为什么不在插入前使用触发器?
-
id 是主要的,用户名是唯一的,但我使用 WHERE 和会话 id ($user = $_SESSION['Username'];)
标签: php mysql where insert-into on-duplicate-key