PHP不会回显先前的数据集

时间:2018-11-26 04:34:12

标签: php sql

由于某种原因,当我尝试显示所有5组数据时,它仅显示4组,并且拒绝显示最新添加的数据组。谁能帮我弄清楚为什么会这样吗?我正在从页面开头的表格中选择所有内容。

<article class="uk-article">
<?php
    $i = 0;
    while ($row = mysqli_fetch_assoc($result)) {
        if($i%1 == 0) {
            echo'<div><div>';
        }
            echo "
                <h2>
                    <a class=uk-link-reset href='projectdetails.php?ID={$row['ID']}' uk-toggle>
                        {$row['title']}
                    </a>
                </h2>
                <p class='uk-article-meta'>Written by {$row['author']}</p>
            ";
        if (strlen($row['info']) > 10) {

            // cut the article
            $infoCut= substr($row['info'], 0, 250);

            //ensure that it ends with a whole word
            $row['info'] = substr($infoCut, 0, strrpos($infoCut, ' ')). "... <a class=uk-link-reset href='projectdetails.php?ID={$row['ID']}' uk-toggle>
                        Read More
                    </a> " ; 
        }
        echo "
            <p> {$row['info']} </p>
        ";
        if($i%1 == 0) {
                echo '</div>
                    </div>'; 
                }
            $i++;
        }
?>
</article>

1 个答案:

答案 0 :(得分:0)

您可以使用“无获取”方法来迭代结果集,并将行索引用作计数器。我假设您想将结果成对分组(否则,我无法想象您要用除以1产生的余数要做什么)。

这是上一篇文章,其中我展示了如何在特定点截断字符串并添加省略号:https://stackoverflow.com/a/49422362/2943403

完成迭代后,关闭所有可能打开的容器很重要,这就是为什么我的代码检查偶数$i的原因。

$query="SELECT `ID`, `title`, `author`, `info` FROM `your_table`";
if (!$conn = new mysqli("localhost", "root", "", "dbname")) {
    echo "Database Connection Error";
} elseif (!$result = $conn->query($query)) {
    echo "Syntax Error";
} else {
    echo "<article class='uk-article'>";
    foreach ($result as $i => $row) {  // fetchless result set iteration
        if (!($i & 1)) { // not odd
            if ($i) { // not zero
                echo "</div>"; // close the open container
            }
            echo "<div style='border:solid 1px black'>"; // create new container for potential pair
        }
        echo "<h2><a class='uk-link-reset' href='projectdetails.php?ID={$row['ID']}' uk-toggle>{$row['title']}</a></h2>";
        echo "<p class='uk-article-meta'>Written by {$row['author']}</p>";
        $ellipsis = "...<a class=uk-link-reset href='projectdetails.php?ID={$row['ID']}' uk-toggle>Read More</a>";
        echo "<p>" , preg_replace('/.{250}\S*\s\K.+/s', $ellipsis, $row['info']) , "</p>";  // only use ellipsis when qualified/needed
    }
    if (!empty($i) && !($i & 1)) {  // $i is declared and is even (ensure valid DOM is generated)
        echo "</div>"; // create new container for potential pair
    }
    echo "</article>";
}