查询适用于phpMyAdmin但不适用于PHP

时间:2015-10-01 01:48:47

标签: php mysql

在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()提供的参数无效

不能为我的生活弄清楚什么是错的!!!!请帮忙!

2 个答案:

答案 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循环?是不是?