显示数据库中倒数第二个值


display two second last value from database

早上好....

我正在使用php MySQL将学生成绩存储在数据库中。

我的数据库表是这样的...

25 63 96 85 65
56 56 96 36 23
56 78 98 45 12

现在我正在尝试显示数据库表中的最后两个值,并希望在我的网站上显示其他任何地方......

我正在使用下面的代码...

<?php
     $q = "SELECT CONCAT (a) FROM record ORDER BY id DESC
     LIMIT 1;";
     $result = mysql_query($q);
     $data = mysql_fetch_array($result);
     echo $data[0];
?>

上面的代码只显示最后一个值。这是上面显示的12表...

我想像这样显示上面显示的表格中的 45 和 12

......

{45}==>{12}

任何人都可以纠正我的代码....

谢谢。。。

正如 Sa玉在评论中指出的那样,mysql_* 函数已被弃用。最好使用 PDO 或 mysqli_* 函数,因为它们将来会得到支持。

我在开头提到它,因为它对安全性和持续支持都非常重要。

话虽如此,您需要做两件事才能获得所需的结果。首先,您的查询必须返回 1 个以上的值,因此必须按照 sgeddes 指出的那样增加 LIMIT,然后您必须显示这两个值,而不仅仅是返回值列表中的第一个值(这就是$data[0]现在正在做的事情 - 只返回数组中的第一项)。

尝试这样的事情:

<?php
$q = "SELECT CONCAT (a) FROM record ORDER BY id DESC
LIMIT 2;";
$result = mysql_query($q);
$data = mysql_fetch_array($result);
echo "{" . $data[1] . "}==>{" . $data[0] . "}"; //prints: "{45}==>{12}"
?>

本质上,由于$data是一个数组,因此您需要将其转换为字符串。我在上面通过引用其元素来做到这一点,但这是一种相当粗糙的方法。例如,如果数据库中只有 1 个值,则尝试echo $data[1]会抛出通知,因为数组中没有第二个值。

implode是一种方便使用的方法,因为您可以将数组转换为字符串并使用值(如逗号)将值粘合在一起。

echo implode(", ", $data); //prints "12, 45" (12 first because it is the first item in the array)

如果您不确定数组中是否存在键,则可以使用 empty 函数,该函数检查该键是否已设置(isset ),以及它是否具有非假值。

if (empty($data[0] == false) {
    echo $data[0];
}
if (empty($data[1] == false) {
    echo $data[1];
}

文档:

  • PDO文档:http://php.net/manual/en/book.pdo.php
  • mysqli_*文档:http://php.net/manual/en/book.mysqli.php
  • implode文档:http://php.net/manual/en/function.implode.php
  • isset文档:http://php.net/manual/en/function.isset.php
  • empty文档:http://php.net/manual/en/function.empty.php

$query="从记录中选择 CONCAT (A) 按 ID 排序 限制 2";

按 DESC 限制 2 排序从数据库中获取最后两条记录。