解決しようとしている問題が少しあります。
私は、PHPがしなければならない量を減らすために、より多くのロジックをSQL呼び出しに入れようとしています。そのような場所の 1 つは、ユーザーが特定のメッセージを読んだかどうかを判断するロジックです。それは機能しますが、あまりにもうまく機能します.SQLは次のとおりです。
SELECT t.* FROM comment c
LEFT JOIN read_message rm ON c.id-rm.cid
WHERE c.author!=2 AND rm.User=2 AND c.tid=17 AND rm.Topic=17 AND c.Original_Date >= UNIX_TIMESTAMP()-3600*24*30 OR c.last_update >= UNIX_TIMESTAMP()-3600*24*30
問題は、入力されたメッセージ ID に関係なく、新しいと見なされるすべてのレコードが常に表示されますが、ID が一致する場合にのみ表示することです。
私が欲しいものを単純化するために:
メッセージ ID に基づいて、ユーザーがこのメッセージを既に読んだかどうかを確認しますが、そのメッセージが 30 日より古い場合は、自動的に古いものと見なされます。
問題は 30 日間の計算です。その部分を取り出した場合は正しく機能しますが、30 日より古いものは無視する必要があります。
これを知る必要がある場合に備えて、私が使用しているフレームワークであるため、タグに codeigniter をリストしました。