如何将此函数的值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参数并将其传递到数据库中的其他位置。
修改:架构
更新用于登录的AFNetworking命令
username
更新:active_users INSERT statment
nickname
答案 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));