[問題] 刪文出現錯誤[問題已解決]

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
wert
星球公民
星球公民
文章: 97
註冊時間: 2004-12-09 13:47

[問題] 刪文出現錯誤[問題已解決]

文章 wert »

●架設主機作業系統:WindowsXp Pro
●快速架站程式:Appserv 2.4.3
●免費空間連結: 無\r
●您的上網方式:ADSL
●您安裝的程式:
●您的 phpBB2 版本:phpBB 2.0.13
●您的 domain(網域名稱) :hkleetw.ath.cx
●您的 phpBB2 連結網址: http://hkleetw.ath.cx/
●錯誤代碼:請使用 BBcode 標籤將錯誤代碼標註,範例如下(這是為了避免語法衝突):
代碼:
一般錯誤

●錯誤狀態:如果沒有錯誤代碼請直接貼出畫面掃描圖或是詳細敘述錯誤狀態內容。

圖檔


Error in postingUPDATE phpbb_users SET user_posts = user_posts - 1 user_reply = user_reply WHERE user_id = 2

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user_reply = user_reply WHERE user_id = 2' at line 3

UPDATE phpbb_users SET user_posts = user_posts - 1 user_reply = user_reply WHERE user_id = 2

Line : 515
File : functions_post.php

而 functions_post.php 第515行為:

代碼: 選擇全部

if (!$db->sql_query($sql, END_TRANSACTION)) [color=red]<---513行[/color]
		{
			message_die(GENERAL_ERROR, 'Error in posting' . $sql, '', __LINE__, __FILE__, $sql);[color=red]<---515行[/color]
		}
小弟將一些當初測試用的文章直接在文章的閱讀頁面中點選刪除,結果就出現如上圖的畫面,返回到首頁之後,該篇文章也是有被刪除掉了,但不知道是那邊出問題,
去爬文有發現類似的問題有發問過但都無人回覆解決的方法,所以小弟就斗膽再發一次請問有沒有哪位前輩知道該如何解決此問題呢??謝謝!!
最後由 wert 於 2005-03-11 09:33 編輯,總共編輯了 1 次。
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

Re: [問題] 刪文出現錯誤

文章 ~倉木麻衣~ »

wert 寫:Error in postingUPDATE phpbb_users SET user_posts = user_posts - 1 user_reply = user_reply WHERE user_id = 2

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user_reply = user_reply WHERE user_id = 2' at line 3

UPDATE phpbb_users SET user_posts = user_posts - 1 user_reply = user_reply WHERE user_id = 2

Line : 515
File : functions_post.php
從這裡推斷你應該有裝過區分主題及回覆的外掛
而問題就出在這個外掛的安裝過程
UPDATE語法裡要用「,」來分隔每一個欄位
正確的語法應該是\r

代碼: 選擇全部

UPDATE phpbb_users SET [color=blue]user_posts = user_posts - 1[/color] [color=orange],user_reply = user_reply[/color] WHERE user_id = 2
所以~再檢查一下你的安裝過程吧
wert
星球公民
星球公民
文章: 97
註冊時間: 2004-12-09 13:47

文章 wert »

再次感謝倉木麻衣大大的指導
原來是那個外掛出問題
小弟有再次去比對一次安裝的過程
發現在修改 functions_post.php 這個檔案中\r

代碼: 選擇全部

#-----[ 尋找 ]------------------------------------------ 
# 
if ($mode != 'poll_delete') 
{ 
   $sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign 
         WHERE user_id = $user_id"; 
# 
#-----[ 改成 ]------------------------------------------ 
# 
if ($mode != 'poll_delete') 
{ 
   $sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign, 
         user_reply = user_reply $replysign 
         WHERE user_id = $user_id"; 
#
而小弟去在我的 functions_post.php 中尋找不到他所要尋找的關鍵字
當初修改時是用 $sql = "UPDATE " . USERS_TABLE . " 當關鍵字來作搜尋修改\r
而剛剛去看時才發現小弟所用的關鍵字所搜尋到的卻是在水怪的mod裡面\r
整個 functions_post.php 中 只找到一個 $sql = "UPDATE " . USERS_TABLE . "

而那段附近的檔案在小弟的檔案中為:

代碼: 選擇全部

// 水怪 RPG
		if ( $mode == "newtopic" )
		{
			$reward_sql = ", rpg_cur_hp = rpg_cur_hp - 3, rpg_cur_mp = rpg_cur_mp - 3, rpg_cur_exp = rpg_cur_exp + 3"; // 發表主題 HP - 3 , MP - 3 , 經驗值 + 3
		}
		if ( $mode == "reply" )
		{
			$reward_sql = ", rpg_cur_hp = rpg_cur_hp - 2, rpg_cur_mp = rpg_cur_mp - 2, rpg_cur_exp = rpg_cur_exp + 2"; // 回覆文章 HP - 2 , MP - 2 , 經驗值 + 2
		}
		[color=red]$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign $checkin $reward_sql
			WHERE user_id = $user_id";[/color]
\n		if (!$db->sql_query($sql, END_TRANSACTION))
		{
			message_die(GENERAL_ERROR, 'Error in posting' . $sql, '', __LINE__, __FILE__, $sql);
		}
		LevelUp($user_id);
	}

	return;
}
是不是因為水怪的關係而導致出問題呢??

而小弟如果用 if ($mode != 'poll_delete') 當關鍵字來搜尋的話\r
則找到三個檔案位置\r
但是卻又不一樣了

第一個:

代碼: 選擇全部

else [color=red]if ($mode != 'poll_delete')[/color]
	{
		$forum_update_sql .= ", forum_last_post_id = $post_id" . (($mode == 'newtopic') ? ", forum_topics = forum_topics $sign" : ""); 
		$topic_update_sql = "topic_last_post_id = $post_id" . (($mode == 'reply') ? ", topic_replies = topic_replies $sign" : ", topic_first_post_id = $post_id");
	}
	else 
	{
		$topic_update_sql .= 'topic_vote = 0';
	}

	[color=red]$sql = "UPDATE " . FORUMS_TABLE . " SET 
		$forum_update_sql 
		WHERE forum_id = $forum_id";[/color]
第二個:

代碼: 選擇全部

[color=red]if ($mode != 'poll_delete')[/color]
	{
	if($board_config['checkin_coden'] != 0)//起動條件後台的checkin_coden不等於0 
   { 
   $config_checkin = $board_config['checkin_coden']; 
   if (( $mode == "newtopic" ) && $forum_id == $config_checkin && $userdata['user_level'] == 0 && $userdata['user_checkin'] == 0)//啟動條件(發表文章,一般會員,現在版面等於後台指定版面,checkin值等於0) 
   { 
      $checkin= ", user_checkin = 1"; // CHECKIN值等於1 
   } 
   }
		// 水怪 RPG
		if ( $mode == "newtopic" )
		{
			$reward_sql = ", rpg_cur_hp = rpg_cur_hp - 3, rpg_cur_mp = rpg_cur_mp - 3, rpg_cur_exp = rpg_cur_exp + 3"; // 發表主題 HP - 3 , MP - 3 , 經驗值 + 3
		}
		if ( $mode == "reply" )
		{
			$reward_sql = ", rpg_cur_hp = rpg_cur_hp - 2, rpg_cur_mp = rpg_cur_mp - 2, rpg_cur_exp = rpg_cur_exp + 2"; // 回覆文章 HP - 2 , MP - 2 , 經驗值 + 2
		}
		[color=red]$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign $checkin $reward_sql
			WHERE user_id = $user_id";[/color]
		if (!$db->sql_query($sql, END_TRANSACTION))
		{
			message_die(GENERAL_ERROR, 'Error in posting' . $sql, '', __LINE__, __FILE__, $sql);
		}
		LevelUp($user_id);
	}

	return;
第三個:

代碼: 選擇全部

[color=red]if ($mode != 'poll_delete')[/color]
	{
		$GLOBALS['cm_posting']->update_delete($mode, $post_data, $forum_id, $topic_id, $post_id);
		include($phpbb_root_path . 'includes/functions_search.'.$phpEx);

		[color=red]$sql = "DELETE FROM " . POSTS_TABLE . " 
			WHERE post_id = $post_id";[/color]
所以當初才會選擇以 $sql = "UPDATE " . USERS_TABLE . " 當關鍵字
然後在上述第二個裡面做修改\r
是否我裝錯地方??還是此外掛跟水怪不相容呢??謝謝!!
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

我這邊沒有裝水怪~所以也沒法很肯定是水怪的關係
但是在你第一篇所提供的錯誤訊息中並沒有與水怪相關的欄位出現\r
而在上一篇所提供的水怪代碼中卻也沒看到「user_reply = user_reply」
所以我想你的安裝順序應該是先裝區分發表主題與回覆~然後才安裝水怪吧?

如果是這樣子~試看看將

代碼: 選擇全部

$sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign $checkin $reward_sql
修改成

代碼: 選擇全部

$sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign $checkin $reward_sql[color=red][size=134],[/size]user_reply = user_reply $replysign[/color]
wert
星球公民
星球公民
文章: 97
註冊時間: 2004-12-09 13:47

文章 wert »

~倉木麻衣~ 寫:我這邊沒有裝水怪~所以也沒法很肯定是水怪的關係
但是在你第一篇所提供的錯誤訊息中並沒有與水怪相關的欄位出現\r
而在上一篇所提供的水怪代碼中卻也沒看到「user_reply = user_reply」
所以我想你的安裝順序應該是先裝區分發表主題與回覆~然後才安裝水怪吧?

如果是這樣子~試看看將

代碼: 選擇全部

$sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign $checkin $reward_sql
修改成

代碼: 選擇全部

$sql = "UPDATE " . USERS_TABLE . " 
         SET user_posts = user_posts $sign $checkin $reward_sql[color=red][size=134],[/size]user_reply = user_reply $replysign[/color]

感謝倉木麻衣大大多次的指導
小弟的安裝順序是先裝水怪\r
然後才安裝區分發表主題與回覆
不過小弟照您的這個指導去修改再去作測試
已經完全正常了
再次感謝~~ :-D :-D
主題已鎖定

回到「phpBB 2 安裝與使用」