1

現在選択されている値の ID に基づいて、下位 (前) または上位 (次) の項目を取得したい mysql テーブルがあります。

このような:

$id_ani = $cap['id_ani']; //Current id
$id_capnex = $cap['id_cap']+1; //Superior id
$nexcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_capnex");
$id_caprev =  $cap['id_cap']-1; //Inferior id
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_caprev");

したがって、コードには、現在の ID、優れた ID、および劣った ID があります。

ここでの問題は、現在の ID = 1 で、1 の後の唯一の既存の ID が 4 の場合、1 の後の唯一の既存の ID である 4 ではなく、スーペリア ID が '1'+1 になることです。劣ったもの。

2 の代わりに 4 を選択し、劣った ID で同じことを行う方法はありますか?

前もって感謝します。

4

2 に答える 2

1

>大なりまたは小なりを使用してみてください<

$id_capnex = $cap['id_cap']+1; //Superior id
$nexcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_capnex");
$id_caprev =  $cap['id_cap'];
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap<$id_caprev orber by id_cap ASC");
//inferior
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap>$id_caprev orber by id_cap ASC");
//superior

mysql_*補足として、関数は非推奨であり、もはや維持されていないことを付け加えたいので、準備済みステートメントに切り替えるPDOか、mysqli準備済みステートメントを使用してリスクを回避する時mysql injectionsが来たと思います。

于 2013-06-19T23:56:24.770 に答える
0
$limit_id=$cap['id_cap']+2

次のクエリを使用して、 prev と next を取得できます。このクエリの結果は 2 つの行を返します。最初のものは前のもので、もう 1 つは次のものです。

SELECT * , IF( id >$cap['id_cap'], 1, 0 ) AS NextFlag, IF( id <$cap['id_cap'], 1, 0 ) AS PrevFlag FROM m_table 
WHERE id_cap <$limit_id
HAVING NextFlag =1
OR PrevFlag =1
ORDER BY id_cap DESC
LIMIT 2 
于 2013-09-05T07:23:06.007 に答える