在phpMyAdmin中,我有一个简单的查询:
SELECT * FROM `recent` WHERE datediff(now(), `timestamp`) > 1
但是当我尝试在clear_recent.php中执行此操作时:
<?php $result = $conn->query("SELECT * FROM `recent` WHERE datediff(now(), `timestamp`) > 1"); ?>
<?php foreach ($result->fetch_assoc() as $row): ?>
<?php while($row = $result->fetch_assoc()) { ?>
<tr>
<td><?php echo($title = $row["id"]); ?></td>
<td><?php echo($title = $row["pid"]); ?></td>
<td><?php echo($title = $row["user_id"]); ?></td>
<td><?php echo($title = $row["timestamp"]); ?></td>
</tr>
<?php } ?>
<?php endforeach; ?>
我收到错误:
在/database/chron/clear_recent.php中为foreach()提供的参数无效
不能为我的生活弄清楚什么是错的!!!!请帮忙!
答案 0 :(得分:0)
您收到此错误,因为此查询没有返回任何行。
答案 1 :(得分:0)
您应该检查查询是否返回任何行。请尝试以下代码。
<?php
$result = $conn->query("SELECT * FROM `recent` WHERE datediff(now(), `timestamp`) > 1");
$rows = $result->fetch_assoc();
//check if some rows available.
if (count($rows) > 0) {
foreach ($rows as $row) {
while ($row = $rows) {
?>
<tr>
<td><?php echo($title = $row["id"]); ?></td>
<td><?php echo($title = $row["pid"]); ?></td>
<td><?php echo($title = $row["user_id"]); ?></td>
<td><?php echo($title = $row["timestamp"]); ?></td>
</tr>
<?php
}
}
}
?>
其他问题:为什么在foreach循环下使用while循环?是不是?