4

そのため、データベース内のレコード間を移動するための次のリンクと前のリンクを追加して、CRUD に少しの利便性を追加しようとしています。

ここに私の質問があります:

$id=$_GET['id'];
$id = $currentid;
$prevquery= "SELECT * FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1"; 
$prevresult = mysql_query($prevquery);

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery);
?>

ここに私のHTMLがあります:

<a href="http://www.url.com/crud/edit.php?id=<?php echo $prevresult; ?> ">Previous</a>

<a href="http://www.url.com/crud/edit.php?id=<?php echo $nextresult; ?> ">Next</a>

PHPMyAdmin でこれらのクエリをテストしたところ、希望どおりの結果が得られましたが、ハイパーリンクに実際に正しい ID を提供することはできません... = の後に空白になっているだけです。私は何を間違っていますか?

4

4 に答える 4

10

mysql_query() は結果セット (リソース) を返します。結果セットから実際の行を取得するには、 のような関数を使用する必要がありますmysql_fetch_row()

「次の」リンクのコードは次のようになります。

PHP

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery);
if(mysql_num_rows($nextresult) > 0)
{
    $nextrow = mysql_fetch_row($nextresult);
    $nextid  = $nextrow['id'];
}

HTML

<a href="http://www.url.com/crud/edit.php?id=<?php echo $nextid; ?> ">Next</a>

前のリンクも同様に行われます。

必須の注意:新しいコードの場合、 PDOの使用を真剣に検討する必要があります。

高度な注意:次のようなクエリを単一のクエリに結合できます。

SELECT
  (
    SELECT id
    FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1
  ) AS previd,
  (
    SELECT id
    FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1
  ) AS nextid

そして、それに応じてロジックを調整します。

于 2012-06-25T18:13:02.763 に答える
0

さて、それは少しかかりましたが、私はそれを理解しました...

PHP

$prevquery= "SELECT * FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1"; 
$prevresult = mysql_query($prevquery) or die(mysql_error());
while($prevrow = mysql_fetch_array($prevresult))
{
$previd  = $prevrow['id'];
}

$nextquery= "SELECT * FROM inventory WHERE id > $currentid ORDER BY id ASC LIMIT 1"; 
$nextresult = mysql_query($nextquery) or die(mysql_error());
while($nextrow = mysql_fetch_array($nextresult))
{
$nextid  = $nextrow['id'];
}

HTML

<a href="http://www.theantiquarium.com/crud/edit.php?id=<?php echo $previd; ?>">Previous</a>

<a href="http://www.theantiquarium.com/crud/edit.php?id=<?php echo $nextid; ?>">Next</a>

助けてくれてありがとう、それは私を正しい方向に導いたと思います。私は将来のためにそのPDOのものを調べます。私はちょうど今、古いMYSQL / PHP構文のコツをつかみ始めています、そして今突然新しいフォーマットがあります...それすべてに追いつくのは難しいです!

于 2012-06-25T19:52:53.853 に答える
0

結果のコードには、テーブルの最初と最後に原因があります。あなたのコードはあなたが注文したように「死んで」しまいます。代わりに、クエリの結果 ($prevresult、$nextresult) を確認して、前または次のアイテムへのリンクを表示しないことを決定できます。

于 2013-10-23T00:25:52.257 に答える
-2

SELECT IFNULL( (SELECT id FROM inventory WHERE id < $currentid ORDER BY id DESC LIMIT 1 ) , (SELECT id FROM 在庫 ORDER BY id DESC LIMIT 1 ) ) AS previd , IFNULL( (SELECT id FROM 在庫 WHERE id > $currentid ORDER BY id ASC LIMIT 1 ), (SELECT id FROM inventory ORDER BY id ASC LIMIT 1 ) ) AS nextid

于 2015-10-23T07:06:47.330 に答える