早上好....
我正在使用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 排序从数据库中获取最后两条记录。