【问题标题】:SQL Query within Query (PHP)查询中的 SQL 查询 (PHP)
【发布时间】:2017-07-26 17:16:47
【问题描述】:

所以我在下面有一些 php,旨在查找尖峰表的列,并根据尖峰查询的结果构建一个 html 表。

当然,我不想为每个循环运行一个查询,所以我定义了 $schema 以在循环之前查询它。但是,如果我不在 while($spike...) 部分中声明它,它就不起作用。我在这里做错了什么?

请不要给我专有的回复。我试图坚持编写尽可能在 sql 解决方案之间交叉兼容的代码。

// Queries
$q_spikes = "SELECT * FROM spikes";
$q_schema = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'spikes'";


// Table
echo "<table>";

    echo "<tr>";
    $schema = $conn->query($q_schema);

    while($info = $schema->fetch_assoc()) {
        echo "<td>" . $info['COLUMN_NAME'] . "</td>";
    }
    echo "</tr>";

    $spikes = $conn->query($q_spikes);

    while($spike = $spikes->fetch_assoc()) {

        echo "<tr>";

        $schema = $conn->query($q_schema);

        while($info = $schema->fetch_assoc()) {
            echo "<td>" . $spike[$info['COLUMN_NAME']] . "</td>";
        }
        echo "</tr>";

    }

echo "</table>";

【问题讨论】:

  • 我认为在真正查询的第一行使用一个简单的array_keys($spike) 可以省去很多麻烦和麻烦
  • 除非您需要使用$spikes 的结果值准备一个语句,否则甚至不需要在循环内进行查询,您可以在之前查询它并在每个迭代。
  • 删除所有 $q_schema 并迭代 $spike。另外,您的字符串之前的N 是什么?

标签: php mysql sql tsql


【解决方案1】:

根据 RiggsFolly 的评论,我能够通过以下方式实现我的目标:

    // Queries
    $q_spikes = "SELECT * FROM spikes";
    $needshead = true;

    // Table
    echo "<table>";
        $spikes = $conn->query($q_spikes);
        while($spike = $spikes->fetch_assoc()) {
            if($needshead) { 
                $needshead = false;
                echo '<tr>';
                    foreach ($spike as $key => $value) {
                    echo '<td>' . $key . '</td>';   
                    }
                echo '<tr>';
            }
            echo "<tr>";
                foreach ($spike as $key => $value) {
                    echo "<td>" . $value . '</td>'; 
                }
            echo "</tr>";
        }
    echo "</table>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多