我想将以下代码添加到表中并限制条目数量

时间:2015-03-24 21:40:15

标签: mysql

我在.php页面上有以下代码,我想在表格中显示它,只显示最后10个条目

<?php
    $servername = "localhost";
    $username = "";
    $password = "";
    $dbname = "";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT * FROM dispenses";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "<br> Amount: " . $row["amount"] . " - Time Dispensed: ". $row["dispensed"] . "<br>";
        }
    } else {
        echo "0 results";
    }
    $conn->close();
?>

2 个答案:

答案 0 :(得分:1)

您可以将所有结果存储在一个数组中,然后只显示该数组的最后10个元素。

while($row = $result->fetch_assoc()) {
    $results[] = $row;
}

for($i = count($results)-10; $i < count($results); $i++){
    echo "<br> Amount: " . $results[$i]["amount"] . " - Time Dispensed: ". $results[$i]["dispensed"] . "<br>";
}

答案 1 :(得分:0)

您可以使用LIMIT限制结果数量:

$sql = "SELECT * FROM dispenses LIMIT 10";

您也可以选择偏移量。请查看documentation了解更多信息。

p.s。 :所以为了按x使用订单获取最后y个条目,请使用:

$sql = "SELECT * FROM (SELECT * FROM dispenses ".
        "ORDER BY y DESC LIMIT 10) AS intermediate ORDER by y ASC";

检查this Fiddle以查看其工作原理。我根据id或插入日期选择最后三个记录。我忘了在上面的陈述中定义别名。现在已修复。希望它有所帮助......