将多个数据库值插入特定行

时间:2016-01-26 12:30:51

标签: php mysql

如何将此函数的值INSERT仅插入username列的值(位于login表中,包含与列{{1}的值完全相同的值(位于名为nickname的表中。)

active_users

其他信息:当用户登录时,我设置API以将用户的名称添加到 $stmt = $this->pdo->prepare('INSERT INTO login (device_token) VALUES (?)'); $stmt->execute(array($token)); (在登录表中)和{_ 1}}中的active_users表中。由于这些值对于各自的表总是相同的,我希望我们可以添加一些条件逻辑来实现这种类型的特异性。我的目标是获取device_token参数并将其传递到数据库中的其他位置。

修改:架构

active_users table

login table

enter image description here

enter image description here

更新用于登录的AFNetworking命令

username

更新:active_users INSERT statment

nickname

2 个答案:

答案 0 :(得分:3)

如果我理解正确的话。你真正想要的是更新,而不是插入。 您想将device_token的值添加到带有昵称的行,对吗?

您可以通过更新来实现:

UPDATE login
SET device_token = @token
WHERE username = @nickname

如果您尝试使用active_users表中的现有记录更新记录,而不是:

UPDATE login AS L
JOIN active_users AU ON L.username = AU.nickname
SET L.device_token = AU.device_token

虽然,看着你的桌子。我想知道你是否重复过多的数据。您似乎可以通过user_id链接login和active_users。好吧,这会脱离主题,所以我建议仔细检查数据库设计概念和你的需求。

答案 1 :(得分:1)

使用PDO应该是

UPDATE login
SET device_token = :token
WHERE username = :nickname

其中将绑定的params数组看起来像

$params = array("token" => $token, "nickname" => $nickname);

完整示例:

$stmt = $this->pdo->prepare('UPDATE login SET device_token=:token WHERE nickname=:nickname');
$stmt->execute(array("token" => $token, "nickname" => $nickname));

或者您使用绑定方法?

UPDATE login
SET device_token = ?
WHERE username = ?

参数数组是

$params = array($token, $nickname);

完整示例:

$stmt = $this->pdo->prepare('UPDATE login SET device_token=? WHERE nickname=?');
$stmt->execute(array($token, $nickname));