2012-06-08 229 views
1

我有一個不尋常的問題,我的while循環,PHP MSSQL while循環

這裏是代碼:

$link = mssql_connect($myServer, $myUser, $myPass); 

if (!$link || !mssql_select_db($myDB, $link)) { 
    die('Unable to connect or select database!'); 
} 

$result = mssql_query("SELECT 
TBL_1.FULLNAME AS FullName, 
CAST(TBL_3.NOTE AS VARCHAR(MAX)) AS Note, 
TBL_3.CREATEDATE AS CreateDate, 
TBL_4.UNAME AS Creator 
FROM 
database.dbo.TBL_1 TBL_1, 
database.dbo.TBL_2 TBL_2, 
database.dbo.TBL_3 TBL_3, 
database.dbo.TBL_4 TBL_4 
WHERE 
TBL_1.UID = TBL_2.UID AND 
TBL_2.NOTEID = TBL_3.NOTEID AND 
TBL_3.CREATORID = TBL_4.USERID AND 
TBL_1.UID = '$id' 
ORDER BY CreateDate desc") or die(mssql_get_last_message()); 

if (!mssql_num_rows($result)) { 
          echo '<tr> 
            <td width="600px"> No results returned</td> 
            </tr>'; 
         } else { 
          while ($row =mssql_fetch_assoc($result)){       
          echo "<tr> 
            <td width='15px'> ".++$counter." </td> 
            <td width='600px'> ".$row['Note']." </td> 
            <td width='185px'>".$row['CreateDate']."</td> 
            <td width='185px'>".$row['Creator']."</td> 
           </tr>"; 
           } 
        } 

對於廣大的記錄,如預期的一切。但在某些情況下,while循環根本沒有響應。沒有錯誤,沒有文字,就像我從未執行命令一樣。

我試圖尋找和閱讀,就像我可以,但沒有一個錯誤,它的安靜難以找到解決方案。

在使用的foreach,而不是嘗試過了,花了一噸的擦洗和清潔讓它不顯示每行1個字符。雖然它只是不斷重複第一張唱片。

我還要指出的是,行1是RTF格式,但我不認爲起到了重要作用。

我從* nix中機連接到MS SQL2005服務器。

預先感謝任何和所有的建議!

+0

查看輸出html頁面的源代碼。你看到了什麼?你不是逃避html輸出的值,所以你可能會破壞標記。 '用htmlspecialchars($行[ '注意'])' –

+0

我看到什麼都沒有,

Mike

+0

有沒有辦法制止while循環看錯誤代碼?至少了解造成這種情況的原因? – Mike

回答

0

如果您正在使用freetds的作爲司機,然後一些時間與smalldate字段其創造出一些問題,你可以做一件事情,以確保去你的php.ini,並嘗試切換

mssql.datetimeconvert = On 

,並在您freetds的。的conf文件嘗試設置

client charset = UTF-8 
text size = 1048576 

,這可能是一個問題,因爲你沒有我面對這個問題的任何線索,並希望與大家分享。