我需要在两个不同的表中为用户更新具有相同名称的列。该列为userCanMessage
userMain
userId | userCanMessage
1 | 0
userSettings
userId | userCanMessage | userCanAdd
1 | 0 | 0
整个事情的结构是有充分理由的。
如果我想在userCanMessage
的两个表中更新userId = 1
,那么在一个查询中最安全的方法是什么?
目前的一个是:
update userMain inner join userSettings on userMain.userId = userSettings.userId
set userMain.userCanMessage = 1,
userSettings.userCanMessage = 1
where userMain.userId = 1;
此处,userMain
是用户的主表,userSettings
是保存设置的表。更新需要首先使用userMain
来影响这两个表。
答案 0 :(得分:0)
为什么要使用JOIN
?做2个简单的查询。
$sql1 = "UPDATE userMain SET userCanMessage WHERE userId=?";
$sql2 = "UPDATE userSettings SET userCanMessage WHERE userId=?";
$stmt1 = $db_usag->prepare($sql1);
$stmt2 = $db_usag->prepare($sql2);
$stmt1->bind_param('d', $param);
$stmt2->bind_param('d', $param);
$stmt1->execute();
$stmt2->execute();
$stmt1->close();
$stmt2->close();