Php 可以避免循环中的查询吗?

Php 可以避免循环中的查询吗?,php,mysql,query-performance,Php,Mysql,Query Performance,我有这样的代码: $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=:d

我有这样的代码:

$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>";
}
$q=“按日期从t1组中选择日期”;
$pdo->query($q);
$results=$pdo->results();
foreach($results作为$result){
回显“$result['date']”;
回声“;
$q=“从t1中选择*其中日期=:日期”;
$pdo->query($q);
$pdo->bind(“日期”,$result['date']);
$subresults=$pdo->resultset();
foreach($subresults作为$sub){
回显“$sub['smth']”;
}
回声“;
}

它从数据库中读取日期,并用数据打印单独的表。不需要在循环中进行查询就可以实现这一点?

您可以按日期排序结果,而不是按分组。然后,您可以使用一些if条件来呈现
h1
标记:

$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>";
$q=“按日期从't1'订单中选择'smth','date'”;
$pdo->query($q);
$results=$pdo->results();
$currentDate='';
foreach($results作为$index=>$result){
如果($currentDate!=$result['date'])){
如果($index!=0){
回声“;
}
回显“{$result['date']}”;
回声“;
}
回显“{$result['smth']}”;
$currentDate=$result['date'];
}
回声“;


NB:未测试

您可以按日期排序结果,而不是按分组。然后,您可以使用一些if条件来呈现
h1
标记:

$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>";
$q=“按日期从't1'订单中选择'smth','date'”;
$pdo->query($q);
$results=$pdo->results();
$currentDate='';
foreach($results作为$index=>$result){
如果($currentDate!=$result['date'])){
如果($index!=0){
回声“;
}
回显“{$result['date']}”;
回声“;
}
回显“{$result['smth']}”;
$currentDate=$result['date'];
}
回声“;

NB:未测试

这非常接近:这一个:这非常接近:这一个: