带有MySql PDO的while循环内的while循环
Posted
技术标签:
【中文标题】带有MySql PDO的while循环内的while循环【英文标题】:While loop inside of while loop with MySql PDO 【发布时间】:2021-12-28 21:12:19 【问题描述】:我需要知道如何进行此查询,因为现在只显示每天的第一个值,而不是每天的全部值。
我需要第二个查询,同时显示当天的所有用户,依此类推
这里是我的查询:
//First While:
<?php
$sql = $conn->prepare("SELECT count(id) AS total, fTera, DATE_FORMAT(fTera, '%d') AS day, DATE_FORMAT(fTera, '%d %M %Y') AS date
FROM TERA WHERE MONTH(fTera) = MONTH(current_date) AND YEAR(fTera) = YEAR(current_date) AND active != 0
GROUP BY date ASC");
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC))
$fT = $row['fTera'];
$paci = $row['total'];
?>
//Second While
<?php
$tera = $conn->prepare("SELECT *
FROM TERA WHERE fTera = :fecha AND active != 0");
$tera->bindParam(':fecha', $fT, PDO::PARAM_STR);
$tera->execute();
$tPaci = 0;
while($row1 = $tera->fetch(PDO::FETCH_ASSOC))
if($paci != $tPaci):
?>
<tr>
<td class="center"><?php echo $row1['nombre']; ?></td>
</tr>
<?php
endif;
$tPaci++;
?>
//End Second While
<?php ?>
//End First While
【问题讨论】:
您的第一个查询是错误的,不应该运行,看看您是否可以创建一个dbfiddle.uk 并运行您的第一个查询,看看会发生什么 【参考方案1】:我已经做到了
我更改了这个 WHERE 子句:
WHERE fTera = :fecha
到这个:
fTera >= '$fT' AND fTera < '$fT' + INTERVAL 1 DAY
现在的第二个查询是:
$tera = $conn->prepare("SELECT *
FROM TERA WHERE fTera >= '$fT' AND fTera < '$fT' + INTERVAL 1 DAY AND active != 0");
$tera->execute();
....
【讨论】:
这很容易受到sql注入,除了他的第一个查询是问题以上是关于带有MySql PDO的while循环内的while循环的主要内容,如果未能解决你的问题,请参考以下文章
php while循环和foreach循环 mysql_fetch_array()