如何使用'$row'将一个数据库表中的特定值插入到另一个数据库表中?

Posted

技术标签:

【中文标题】如何使用\'$row\'将一个数据库表中的特定值插入到另一个数据库表中?【英文标题】:How to insert a particular value from one database table into another using '$row'?如何使用'$row'将一个数据库表中的特定值插入到另一个数据库表中? 【发布时间】:2019-04-04 09:41:43 【问题描述】:

我目前正在尝试创建一个系统,该系统从表“用户”中随机选择一个用户,并将其附加到另一个表“同意用户”或“不同意用户”,具体取决于用户是否具有“意见”值“喜欢”或“不喜欢”。我这样做是通过使用 $row 来选择用户有“喜欢”意见的整行,但它似乎没有将存储在 '$row[username]' 中的数据添加到 'user' 列'agreeuser' 或 'disagreeuser' 表。

我已经尝试将 '$row['username'] 值存储为变量并在查询的值方面使用它,但它似乎没有奏效。我也尝试过结合 INSERT 和 SELECT 查询,但仍然没有效果。谁能告诉我我做错了什么,好吗? :)

if($_SESSION['pageLoaded'] != "true") 

    $selectLikesQuery = "SELECT * FROM users WHERE opinion = 'like' ORDER BY RAND() LIMIT 1";
    $likeSelectorResult = mysqli_query($userConnect, $selectLikesQuery);
    while($row = mysqli_fetch_assoc($likeSelectorResult)) 
        $removeCurrentAgreeContent = "TRUNCATE TABLE agreeUser";
        $addAgreeUserQuery = "INSERT INTO agreeUser (user) VALUE ('$row[username]')";
        mysqli_query($chatConnect, $removeCurrentAgreeContent);
        mysqli_query($chatConnect, $addAgreeUserQuery);
    

    $selectDislikesQuery = "SELECT * FROM users WHERE opinion = 'dislike' ORDER BY RAND() LIMIT 1";
    $dislikeSelectorResult = mysqli_query($userConnect, $selectDislikesQuery);
    while($row = mysqli_fetch_assoc($dislikeSelectorResult)) 
        $removeCurrentDisagreeContent = "TRUNCATE TABLE disagreeUser";
        $addDisagreeUserQuery = "INSERT INTO disagreeUser (user) VALUE ('$row[username]')";
        mysqli_query($chatConnect, $removeCurrentDisagreeContent);
        mysqli_query($chatConnect, $addDisagreeUserQuery);
    
    $_SESSION['pageLoaded'] = "true";

我需要将“users”中的用户名插入“agreeuser”的“user”列。感谢您的帮助,如果我做了一些愚蠢的事情,我们深表歉意:)

【问题讨论】:

【参考方案1】:

您为什么不使用 SQL 视图仅在“虚拟表”中​​查看所需数据,而不是创建重复数据?

Views 是一个非常有用的功能。

例如,进行 SELECT 查询以查找所需的行:

SELECT * FROM users WHERE opinion = 'dislike'

如果此选择适合您,只需添加:

CREATE OR REPLACE VIEW v_agreeUsers AS SELECT * FROM users WHERE opinion = 'dislike'

对同意的用户也一样:

CREATE OR REPLACE VIEW v_disagreeUsers AS SELECT * FROM users WHERE opinion = 'like'

说实话,我不明白你为什么要随机选择并只一个一个地插入用户。

如果您只想获得一个随机用户,只需在创建上面提到的视图后运行此查询:

SELECT * FROM v_agreeUsers ORDER BY RAND() LIMIT 1
SELECT * FROM v_disagreeUsers ORDER BY RAND() LIMIT 1

祝你好运! :)

【讨论】:

我一次只将一个随机用户放入表中,这样只有他们才有权使用页面上的聊天框,然后再换成另一个用户。谢谢,这看起来非常有用:) 很抱歉打扰它,但你知道我需要用它替换哪些查询或者我应该把它们放在代码中的什么地方吗?再次感谢:) 只需转到您的 mysql 命令行或任何 mysql 管理器,如 phpMyadmin 或其他。并使用我发送给您的命令创建视图。然后你可以用 PHP 编写代码来处理从创建的视图中获取的数据。

以上是关于如何使用'$row'将一个数据库表中的特定值插入到另一个数据库表中?的主要内容,如果未能解决你的问题,请参考以下文章

Grails数据库迁移-将插入值手动更改日志记录到表中的特定列

防止 SQL 表中的重复值

如何将一个表中的值插入到另一个表中?

如何将存储在引用表中的引用值插入到另一个表中?

oracle - 如何将一个表中的唯一值多次插入到另一个表中?

如何将一个表中的值插入另一个表,然后更新原始表?