【问题标题】:Is it possible to avoid query in loop?是否可以避免循环查询?
【发布时间】:2018-02-15 14:56:26
【问题描述】:

我有这样的代码:

$q = "SELECT date FROM t1 GROUP BY date";
$pdo->query($q);
$results = $pdo->results();

foreach($results as $result) {
    echo "<h1>$result['date']</h1>";
    echo "<table>";

    $q = "SELECT * FROM t1 WHERE date=:date";
    $pdo->query($q);
    $pdo->bind("date", $result['date']);
    $subresults = $pdo->resultset();

    foreach($subresults as $sub) {
        echo "<tr><td>$sub['smth']</td></tr>";
    }

    echo "</table>";
}

它从数据库中读取日期并打印带有数据的单独表格。是否可以在不循环查询的情况下实现这一点?

【问题讨论】:

标签: php mysql query-performance


【解决方案1】:

您可以按日期排序结果,而不是分组。然后,你可以使用一些 if 条件来渲染 h1table 标签:

$q = "SELECT `smth`, `date` FROM `t1` ORDER BY `date`";
$pdo->query($q);
$results = $pdo->results();

$currentDate = '';
foreach($results as $index => $result) {
    if ($currentDate != $result['date']) {
        if ($index != 0) {
            echo "</table>";
        }

        echo "<h1>{$result['date']}</h1>";
        echo "<table>";
    }

    echo "<tr><td>{$result['smth']}</td></tr>";

    $currentDate = $result['date'];
}

echo "</table>";

注意:未测试

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多