问题描述
所以我一直在尝试创建一个简单的朋友系统。注册时,您将获得随机数字和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
名称)。我想将$sessionUser
插入到uid1,并将与uidUsers
匹配的任何用户名($idFriendCode
)插入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_qr='SELECT uidUsers FROM users WHERE idFriendCode = $idFriendCode'
$sql = mysqli_query($conn,"INSERT into friends (uid1,uid2)
values($sessionUser,$select_qr)");