0

私は現在、php と mysql を使用していくつかのインターネット フォーラムを作成していますが、障害にぶつかっています...これに必要な制約を実装する方法、またはそれを自分のサイトに正確に実装する方法さえわかりません (sql トリガーまたはプロシージャまたはphpスクリプト?)。

とにかく、ブログという名前のデータベースがあり、投稿とスレッドの 2 つのテーブルがあります。posts テーブルには、posts テーブルに挿入するたびに、reply_id と parent_id という 2 つの列が関係します。挿入された行の reply_id を、スレッドのテーブル topic_order として設定する必要があります。ここで、topic_id=parent_id.. .

トピックを表示するページは、topic_order が高い順に並べ替えます。したがって、reply_id が高いほど topic_order が高くなり、スレッドがリストの一番上に表示されます。

$result_t = mysqli_query($con,"SELECT * FROM threads WHERE board_id='$row_b[board_id]' ORDER BY topic_order DESC");

現在表示中ですhttp://fenster.myftp.org/blog/forums/board.php?id=1

SQLトリガーが必要だったので、試行錯誤の結果、reply_idを使用して挿入された行を見つけ、その行のデータのみに制限できることがわかりました

CREATE TRIGGER `bump` AFTER INSERT ON `posts`
 FOR EACH ROW UPDATE threads
SET topic_order=(SELECT reply_id FROM posts ORDER BY reply_id DESC LIMIT 1)
WHERE topic_id=(SELECT parent_id FROM posts ORDER BY reply_id DESC LIMIT 1)
4

1 に答える 1

0

これを交換

    WHERE board_id='$row_b[board_id]'

   WHERE board_id='".$row_b['board_id']."'
                            ^--------^--------you need quotes here
于 2013-07-27T14:30:56.870 に答える