[問題] 用MS SQL Server 架站無法貼文問題

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

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
fjguo
星球普通子民
星球普通子民
文章: 4
註冊時間: 2004-02-15 09:22
來自: 臺大醫院
聯繫:

[問題] 用MS SQL Server 架站無法貼文問題

文章 fjguo »

我是用 Windows 2000 + IIS 5 + SQL Server 2000 ODBC 架站
及果貼文有時可以有時不行

:arrow: 視窗外出現以下錯誤:

Warning: odbc_exec(): SQL error: [Microsoft][ODBC SQL Server Driver]COUNT 欄位不正確或語法錯誤, SQL state 07001 in SQLExecDirect in F:\PHP\phpBB2\db\mssql-odbc.php on line 117

Warning: Cannot modify header information - headers already sent by (output started at F:\PHP\phpBB2\db\mssql-odbc.php:117) in F:\PHP\phpBB2\includes\page_header.php on line 474

Warning: Cannot modify header information - headers already sent by (output started at F:\PHP\phpBB2\db\mssql-odbc.php:117) in F:\PHP\phpBB2\includes\page_header.php on line 476

Warning: Cannot modify header information - headers already sent by (output started at F:\PHP\phpBB2\db\mssql-odbc.php:117) in F:\PHP\phpBB2\includes\page_header.php on line 477

:arrow: 視窗裡還有錯誤訊息:

Could not select words

DEBUG MODE

SQL Error : 07001 [Microsoft][ODBC SQL Server Driver]COUNT 欄位不正確或語法錯誤

SELECT word_id, word_text FROM phpbb_search_wordlist WHERE word_text IN ('aldous', 'com', 'edirect168', 'email', '社區醫學研究群所研發', '者殃誰', '研究學?, '計者及維?, '負責卻管', '部份', '最早殃在鹿谷鄉使用', '請裴')

Line : 172
File : F:\PHP\phpBB2\includes\functions_search.php
最後由 fjguo 於 2004-02-16 00:52 編輯,總共編輯了 1 次。
系統規格:
Windows 2000 server
IIS 5.0
MS SQL Server 2000 ODBC
PHPbb 2.0.6
PHP 4.3.4
fjguo
星球普通子民
星球普通子民
文章: 4
註冊時間: 2004-02-15 09:22
來自: 臺大醫院
聯繫:

文章 fjguo »

就我有限的 SQL 知識, 應該是下列查詢出問題

:arrow: SELECT word_id, word_text FROM phpbb_search_wordlist WHERE word_text IN ('aldous', 'com', 'edirect168', 'email', '社區醫學研究群所研發', '者殃誰', '研究學?, '計者及維?, '負責卻管', '部份', '最早殃在鹿谷鄉使用', '請裴')

因為 in 後面的字串有一些應該用 ' 號標示起來的現在變成 ? 號

這句查詢是 F:\PHP\phpBB2\includes\functions_search.php 中第 167行

:arrow: $sql = "SELECT word_id, word_text
FROM " . SEARCH_WORD_TABLE . "
WHERE word_text IN ($word_text_sql)";

所產生, 問題出在 $word_text_sql 這個變數\r
尋找程式碼以後, 這個變數是在第 146 行產生

:arrow: $word_text_sql = '';
$temp_word = array();
for($i = 0; $i < count($word); $i++)
{
if ( $word[$i] != $prev_word )
{
$temp_word[] = $word[$i];
$word_text_sql .= ( ( $word_text_sql != '' ) ? ', ' : '' ) . "'" . $word[$i] . "'";
}
$prev_word = $word[$i];
}

應該是這裡出問題, 可是我看不懂, 有高手可以解惑嗎 ?

理論上這像是中文才會有的問題, 可能是 F:\PHP\phpBB2\db\mssql-odbc.php 造成的, 所以使用 MS SQL Server 2000 ODBC 的人應該都有相同的問題
系統規格:
Windows 2000 server
IIS 5.0
MS SQL Server 2000 ODBC
PHPbb 2.0.6
PHP 4.3.4
streitleak
星球公民
星球公民
文章: 261
註冊時間: 2003-07-26 04:44
來自: 龍潭
聯繫:

文章 streitleak »

fjguo 寫:
:arrow: $word_text_sql = '';
這裡錯了....$word_text_sql = "";才對...讓他為空集合..內容未清的話...

後面的資料可能還有保留....

fjguo 寫: $word_text_sql .= ( ( $word_text_sql != '' ) ? ', ' : '' ) . "'" . $word[$i] . "'";
這段也是.... 改成(($word_text_sql !="")?',':"")."".$word[$i]."";
這樣試試看....
台灣動漫論壇
http://ACGFan.twbbs.org
星
汝命短眷族望聞
我望 
汝本將末看取
-------------《人類帝國國歌一節
fjguo
星球普通子民
星球普通子民
文章: 4
註冊時間: 2004-02-15 09:22
來自: 臺大醫院
聯繫:

文章 fjguo »

試過了, 無效\r

我在 Function_search.php 第92行找到一段話

function split_words(&$entry, $mode = 'post')
{
// If you experience problems with the new method, uncomment this block.
/*
$rex = ( $mode == 'post' ) ? "/\b([\w接-?][\w接-?']*[\w接-?]+|[\w接-?]+?)\b/" : '/(\*?[a-z0-9接-?]+\*?)|\b([a-z0-9接-?]+)\b/';
preg_match_all($rex, $entry, $split_entries);

return $split_entries[1];
*/
// Trim 1+ spaces to one space and split this trimmed string into words.
return explode(' ', trim(preg_replace('#\s+#', ' ', $entry)));
}

我把它 unmark 以後還是會出現錯誤訊息, 但是一秒鐘以後就回到討論版畫面, 而且貼文成功

我想錯誤畫面應該是表示 search 的功能沒有了

無論如何, 這樣可以貼文了, 只是錯誤畫面會閃一下, 很不漂亮\r
希望還有高手指導
系統規格:
Windows 2000 server
IIS 5.0
MS SQL Server 2000 ODBC
PHPbb 2.0.6
PHP 4.3.4
頭像
kstsabc
星球普通子民
星球普通子民
文章: 12
註冊時間: 2004-03-20 02:43
來自: 黑洞國度

文章 kstsabc »

我也是用MS SQL..
我在2.0.7版時.中文字的處理上也會有這樣子的問題.
不過我把那段文字unmark時.
已經沒有錯誤畫面.
而且.用搜尋功能時.也沒有任何問題.^^
chenmuen
星球普通子民
星球普通子民
文章: 6
註冊時間: 2004-05-03 10:26

[問題]應該找到了

文章 chenmuen »

我找到問題點了...
正在爬官方網站
頭像
kstsabc
星球普通子民
星球普通子民
文章: 12
註冊時間: 2004-03-20 02:43
來自: 黑洞國度

Re: [問題]應該找到了

文章 kstsabc »

那照著那份文件的說明把原文make起來會有問題嗎? :roll:
chenmuen 寫:我找到問題點了...
正在爬官方網站
chenmuen
星球普通子民
星球普通子民
文章: 6
註冊時間: 2004-05-03 10:26

文章 chenmuen »

官網的forum上
有人反應給PHPBB BUG TRACKER這樣的問題
但BUG TRACKER認為這不是PHPBB的問題
所以總規有二個方式可以處理這個
1.修改PHP.ini 若是web hosting的用戶可能無法修改\r
2.修改db/mssql-odbc.php

目前看起來都是可行的
主因是因為string truncated
4K大小的限制\r

我先在我的機器work一下...沒問題再把solution貼上來
ady9b
星球公民
星球公民
文章: 31
註冊時間: 2004-03-01 10:23

文章 ady9b »

chenmuen 寫:官網的forum上
有人反應給PHPBB BUG TRACKER這樣的問題
但BUG TRACKER認為這不是PHPBB的問題
所以總規有二個方式可以處理這個
1.修改PHP.ini 若是web hosting的用戶可能無法修改\r
2.修改db/mssql-odbc.php

目前看起來都是可行的
主因是因為string truncated
4K大小的限制\r
\r
我先在我的機器work一下...沒問題再把solution貼上來
咦...難不成我的文章會被截掉,是這裡的問題?
我覺得很有可能耶... 我也試看看好了...

不過,要改什麼啊 :?:
chenmuen
星球普通子民
星球普通子民
文章: 6
註冊時間: 2004-05-03 10:26

文章 chenmuen »

我已經突破4K的限制了...
最後由 chenmuen 於 2004-05-03 14:55 編輯,總共編輯了 1 次。
ady9b
星球公民
星球公民
文章: 31
註冊時間: 2004-03-01 10:23

文章 ady9b »

chenmuen 寫:我已經突破4K的限制了...
但問題又來了
好像是中文編碼的問題
現在出現\r
怎麼突破的啊,教一下吧...
:mrgreen:
chenmuen
星球普通子民
星球普通子民
文章: 6
註冊時間: 2004-05-03 10:26

文章 chenmuen »

若是你可以修改php.ini
先找到\r
; Valid range 0 - 2147483647. Default = 4096.
mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
mssql.textsize = 4096

將4096改成你要的大小,我是改成了262144(也就是256K)

若你是使用ODBC來連結
再找到\r
odbc.defaultlrl = 4096
將4096改成你要的大小,我是改成了76400

這二個數值好像沒有比例的關係

在mssql.php找到\r
return $this->db_connect_id;
在它前面加一行
mssql_query("set textsize 76800");
裡面的數字就是你可以讀到的內容大小了
或者把第140行的SQL敍述改成
$this->result = mssql_query("set textsize 76800 SELECT $query", $this->db_connect_id);
數字一樣是你要讀到的內容大小

原文: http://www.phpbb.com/phpBB/viewtopic.ph ... mssql+odbc
ady9b
星球公民
星球公民
文章: 31
註冊時間: 2004-03-01 10:23

文章 ady9b »

問題解決了,真感謝.... :-D
主題已鎖定

回到「phpBB 2 安裝與使用」