你能在两个表之间做一个 "INSERT SELECT WHERE" 吗?

Can you do a "INSERT SELECT WHERE" between two tables?

所以我一直在尝试创建一个简单的好友系统。当你注册时,你会得到随机数字和长度为 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)");

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

我知道我不使用准备好的语句。我试图实现它,但我认为它比仅使用基本的 mysqli_query().

要难得多

您可以将插入内容表述为 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 = ?;

尝试为 select 创建一个新变量并在插入查询中使用它

示例:

$select_qr='SELECT  uidUsers FROM users WHERE idFriendCode = $idFriendCode'

$sql = mysqli_query($conn, "INSERT into friends (uid1, uid2) 
    values($sessionUser, $select_qr)");