[問題]Recent Topics 檢視近日發表的文章出現資料庫錯誤

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
一平
星球公民
星球公民
文章: 50
註冊時間: 2003-02-01 21:36

[問題]Recent Topics 檢視近日發表的文章出現資料庫錯誤

文章 一平 »

下載: http://www.phpbbhacks.com/viewhack.php?id=1369

Appserv2.45

這個 Recent Topics 第三版之前使用相安無事,最近把Appserv升級到2.45最新版本,內建mysql5,一切正常但是就只有Recent Topics出問題,訊息如下,不知道有人有跟我一樣的情形嗎,要怎麼解決才好?

could not obtain main information.

DEBUG MODE

SQL Error : 1054 Unknown column 'p2.post_username' in 'field list'

SELECT t.*, p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name FROM phpbb_topics t, phpbb_posts p LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster WHERE t.forum_id NOT IN ('start') AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME(p.post_time,'%Y%m%d') - FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') = 0 ORDER BY t.topic_last_post_id DESC LIMIT 0, 10

Line : 127
File : recent.php

參考網址 http://npb.club.tw/recent.php
圖檔
http://npb.club.tw/
日本職棒促進會
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

因為少了這一句
LEFT OUTER JOIN ". POSTS_TABLE ." p2 ON p2.post_id = t.topic_first_post_id
所以系統不知道p2是從那裡蹦出來的
建議你用原始的recent.php重新覆蓋過
謝絕所有私人訊息詢問外掛相關問題
有問題請直接於版上發表, 集思廣議絕對比專挑特定人士詢問來的好

竹貓禁止發表含破解相關的軟體, 違者砍文
不要跟我講別的地方都可以發, 為什麼竹貓就不行
免費不等於破解, 傻傻的搞不清楚
一平
星球公民
星球公民
文章: 50
註冊時間: 2003-02-01 21:36

文章 一平 »

蓋過以後錯誤訊息變成如下:

could not obtain main information.

DEBUG MODE

SQL Error : 1054 Unknown column 't.topic_first_post_id' in 'on clause'

SELECT t.*, p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name FROM phpbb_topics t, phpbb_posts p LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster WHERE t.forum_id NOT IN ('start') AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME(p.post_time,'%Y%m%d') - FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') = 0 ORDER BY t.topic_last_post_id DESC LIMIT 0, 10

Line : 127
File : recent.php


似乎是換湯不換藥的問題,不知道要怎麼解決?或是可以推薦一個類似的外掛讓我安裝嗎?謝謝。
圖檔
http://npb.club.tw/
日本職棒促進會
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

個人是覺得, 先到phpMyAdmin裡確認一下phpbb_topics裡有topic_first_post_id欄位
不過這個欄位是內建的, 不可能會沒有
所以我把你上頭的sql語法複製到我的phpMyAdmin裡去執行(MySQL 4.1.18), 結果是可以順利執行, 沒有任何錯誤
因此個人猜測, 這可能是MySQL版本的問題
謝絕所有私人訊息詢問外掛相關問題
有問題請直接於版上發表, 集思廣議絕對比專挑特定人士詢問來的好

竹貓禁止發表含破解相關的軟體, 違者砍文
不要跟我講別的地方都可以發, 為什麼竹貓就不行
免費不等於破解, 傻傻的搞不清楚
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

剛在VMWare裡安裝Appser 2.4.5版來做測試底下的SQL

代碼: 選擇全部

SELECT t. * , p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
FROM phpbb_topics t, phpbb_posts p
LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id
LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id
LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id
LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster
WHERE t.forum_id NOT 
IN ( 65, 63, 85, 86 ) AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME( p.post_time, '%Y%m%d' ) - FROM_UNIXTIME( unix_timestamp( NOW( ) ) , '%Y%m%d' ) =0
ORDER BY t.topic_last_post_id DESC 
LIMIT 0 , 10
結果就如一平所講的, 會出現這個錯誤訊息
SQL Error : 1054 Unknown column 't.topic_first_post_id' in 'on clause'

後來去MySQL官方查了一下5.0版的join語法, 發現在FROM後若有接二個以上的資料表, 大部份都有用()括號括起來
於是我就將上述的SQL改成
SELECT t. * , p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
FROM (phpbb_topics t, phpbb_posts p)
LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id
LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id
LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id
LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster
WHERE t.forum_id NOT
IN ( 65, 63, 85, 86 ) AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME( p.post_time, '%Y%m%d' ) - FROM_UNIXTIME( unix_timestamp( NOW( ) ) , '%Y%m%d' ) =0
ORDER BY t.topic_last_post_id DESC
LIMIT 0 , 10
結果就正常了

建議您將recent.php裡的這句

代碼: 選擇全部

FROM ". TOPICS_TABLE ." t, ". POSTS_TABLE ." p
改成這樣再試看看

代碼: 選擇全部

FROM (". TOPICS_TABLE ." t, ". POSTS_TABLE ." p)
謝絕所有私人訊息詢問外掛相關問題
有問題請直接於版上發表, 集思廣議絕對比專挑特定人士詢問來的好

竹貓禁止發表含破解相關的軟體, 違者砍文
不要跟我講別的地方都可以發, 為什麼竹貓就不行
免費不等於破解, 傻傻的搞不清楚
一平
星球公民
星球公民
文章: 50
註冊時間: 2003-02-01 21:36

文章 一平 »

真強者!恩同再造!問題已經解決,也許倉木兄可以通知該外掛原作者有這個問題,讓全世界的愛用者都能及時修改QQ
圖檔
http://npb.club.tw/
日本職棒促進會
主題已鎖定

回到「外掛問題討論」