首页 > 解决方案 > 您可以在两个表之间执行“INSERT SELECT WHERE”吗?

问题描述

所以我一直在尝试创建一个简单的朋友系统。当你注册时,你会得到随机数字和 8 个长度的字符。我将此数字保存在用户的列中。我一直在尝试使用“INSERT SELECT WHERE”语句插入当前会话用户(PHP)$SessionUser以及朋友的用户名,但出现了问题。uidUsers这是我尝试过的东西:

$sql = mysqli_query($conn, "INSERT into friends (uid1, uid2) 
    values($sessionUser, (SELECT  uidUsers FROM users WHERE idFriendCode = $idFriendCode)");

在表中friends,我有两列,uid1(会话用户/发送者)和uid2(接收者,指定的名称$idFriendCode)。我想将 插入$sessionUseruid1 以及与 匹配的任何用户名(uidUsers)。这似乎不起作用,我不知道为什么。我想问题是我不能使用这样的 PHP 变量。$idFriendCodeuid2

我知道我不使用准备好的语句。我已经尝试实现它,但我认为它比仅使用基本的 mysqli_query() 要困难得多。

标签: phpsqlsessioninsert

解决方案


您可以将插入内容表述为INSERT INTO ... SELECT

INSERT into friends (uid1, uid2) 
SELECT $sessionUser, uidUsers
FROM users
WHERE idFriendCode = $idFriendCode;

请注意,理想情况下,您应该在这里使用准备好的语句,因此上面的内容应如下所示:

INSERT into friends (uid1, uid2) 
SELECT ?, uidUsers
FROM users
WHERE idFriendCode = ?;

推荐阅读