【问题标题】:Can you do a "INSERT SELECT WHERE" between two tables?您可以在两个表之间执行“INSERT SELECT WHERE”吗?
【发布时间】:2020-12-24 08:48:45
【问题描述】:

所以我一直在尝试创建一个简单的朋友系统。当你注册时,你会得到随机数字和长度为 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,并将与$idFriendCode 匹配的任何用户名(uidUsers)插入uid2。这似乎不起作用,我不知道为什么。我想问题是我不能使用这样的 PHP 变量。

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

【问题讨论】:

标签: php sql session insert


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试为选择添加一个新变量并在插入查询中使用它

    示例:

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

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2016-02-27
      • 1970-01-01
      相关资源
      最近更新 更多