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セットの最初の行のみを取得したいので、追加しました。必要な行が 1 つだけの場合、while ループは必要ありません。fetch を 1 回呼び出すだけです。

$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 に答える