【问题标题】:display two second last value from database显示数据库中倒数第二个值
【发布时间】:2016-03-13 03:53:59
【问题描述】:

早安……

我正在使用 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}

谁能更正我的代码....

谢谢...

【问题讨论】:

  • 嗯,LIMIT 2 代替。 . .
  • 不要使用mysql_* 方法,因为它们已被弃用并且存在重大安全漏洞。
  • 我已经通过 put Limit 2 进行了检查;但它仍然只显示最后一个值...

标签: php mysql database


【解决方案1】:

正如Saitama 在 cmets 中指出的那样,不推荐使用 mysql_* 函数。最好使用 PDO 或 mysqli_* 函数,因为它们将在未来得到支持。

我一开始就提到它,因为它对于安全性和持续支持都非常重要。

话虽如此,您需要做两件事才能获得您想要的结果。首先,您的查询必须返回超过 1 个值,因此 LIMIT 必须像 sgeddes 指出的那样增加,然后您必须显示这两个值,而不仅仅是返回值列表中的第一个值(这就是 $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];
}

文档:

【讨论】:

    【解决方案2】:

    $query="SELECT CONCAT (a) FROM record ORDER BY id DESC 限制 2";

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多