我如何将它们从第二个查询中排除?

Posted

技术标签:

【中文标题】我如何将它们从第二个查询中排除?【英文标题】:How would I exclude them from the 2nd query? 【发布时间】:2015-08-30 20:55:44 【问题描述】:

我注释掉了这个部分来检查我们到目前为止得到了什么:

        echo "
    <div class='formTitle' style='position: relative; text-align: center; margin-top: 20px'>Medals</div>
    <table class='profileTable' id='medalTable' style='border-top-width: 0px'>
";
$mID = $_GET['mID'];
$result = $mysqli->query("SELECT * FROM ".$dbprefix."clanawards_members WHERE maa_member_id = '$mID'");
    while($row = $result->fetch_assoc()) 
        //RETRIEVE ALL COLUMN NAMES then run a foreach to run each one through the next query
        foreach($row as $key => $val) 
            // $result = $mysqli->query("SELECT * FROM ".$dbprefix."clanawards WHERE EXISTS name = '$key'");
                // while($row = $result->fetch_assoc()) 
                // $awardName = $row['name'];
                //  $description = $row['description'];
                    echo "
                        <tr><td class='main' align='center'>$key<br>$awardName</td></tr>    
                    ";
                //
        
    
echo "</table>";

这给了我我正在寻找的表格列列表,但我们添加了评论部分,它给了我这个:

致命错误:在第 34 行的 PREVIOUSFOLDERS/include/profile/_medals.php 中对非对象调用成员函数 fetch_assoc()

第二个查询中的 while 子句是什么...我认为这与 EXISTS 位于错误位置或没有按照我想要的方式工作有关,但我之前从未使用过 EXISTS。

列或 $keys 包含 3 个列名,不会出现在下一个数据库中。

【问题讨论】:

【参考方案1】:

不确定我是否理解这一点,但我认为这就是你想要的:

while ($row = $result->fetch_assoc()) 
  foreach ($row as $key => $val) 
    $result = $mysqli->query(...);
  

在循环内部,$key 将是列名,$val 将是该列在该行的值。

我不确定“Award”是列名还是实际的单元格值,但您可以将 $key$val 替换为 $Award(尽管如果需要,它应该是 $award保持一致...:))

【讨论】:

好的做了一点编辑我将如何添加如果存在第二个查询?

以上是关于我如何将它们从第二个查询中排除?的主要内容,如果未能解决你的问题,请参考以下文章

如何将这两个查询组合成一个查询?

SQL LEFT JOIN 从第二个表中排除两条记录

如何使用子查询的多行返回值插入表中?

仅当执行第一个查询的记录集中没有记录时,SPARQL 从第二个查询返回记录

Microsoft SQL 查询 - 从第二个表返回最后一条记录

在多个连接条件下将数据从第二个表插入一个表