2

有些人可能知道我的脚本 Basic Announce,我正在尝试获取已发送的最新新闻条目,因此只调用最后一个知道的条目。

在这个代码块中是我最初创建的新闻调用者,但这决定调用所有条目,但那是为了让管理员看到,但我需要在这个文件中调用最后一个条目:news.php

<?php

// Connects to your Database

mysql_connect("$server","$usr","$pswd") or die(mysql_error());

mysql_select_db("$db") or die(mysql_error());

$data = mysql_query("SELECT * FROM announcements")

or die(mysql_error());



while($info = mysql_fetch_array( $data ))

{

Print "<tr>";

Print "<th>Announcement:</th><td>".$info['Announcement'] . "</td> ";

Print "<br>";

Print "<th>Submitted By:</th> <td>".$info['Submitted'] . "</td> ";

}

;

?>

我将如何选择最后一个知道的条目我还包括我的数据库表 sql 代码。

这是基本的 Announce.sql 代码

CREATE TABLE IF NOT EXISTS `announcements` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Announcement` text NOT NULL,
  `Submitted` text NOT NULL,
  `Date_time` date NOT NULL,
  PRIMARY KEY (`id`)
);

是否可以使用我的主键“id”提取最后一条记录?

任何关于这个令人不安的问题的帮助将不胜感激,因为我仍然通过自学和灵感学习 PHP。

非常感谢

4

2 回答 2

1

id降序排列:

$data = mysql_query("SELECT * FROM announcements ORDER BY id DESC LIMIT 1");

我还添加了LIMIT 1因为您只想检索集合中的第一行。鉴于您只想要一行,您不需要 while 循环,只需进行一次调用即可获取:

$data = mysql_query("SELECT * FROM announcements ORDER BY id DESC LIMIT 1");

if($data && mysql_num_rows($data) == 1) // check for success and a row found
{
    $info = mysql_fetch_array( $data );

    Print "<tr>";
    Print "<th>Announcement:</th><td>".$info['Announcement'] . "</td> ";
    Print "<br>";
    Print "<th>Submitted By:</th> <td>".$info['Submitted'] . "</td> ";
}
else
{
    // no rows or an error occurred
}

旁注:

  • mysql_*库已弃用。对于新代码,您应该考虑升级到 PDO 或 MySQLi。

  • .. or die(mysql_error())应该避免。更好的选择是trigger_error(mysql_error()).

于 2013-07-01T11:00:38.090 回答
0

试试这个。

SELECT Top 1 * FROM announcements order by id desc
于 2013-07-01T11:09:13.103 回答