1

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 文字が表示されないようにするために大量のスクラブとクリーニングが必要でした。それは本当に最初のレコードを繰り返し続けただけですが。

行の 1 つが RTF 形式であることも指摘しておく必要がありますが、それが役割を果たすとは思いません。

*nix マシンから MS SQL2005 サーバーに接続しています。

あらゆるアドバイスを事前にありがとう!

4

1 に答える 1

0

freetds をドライバーとして使用している場合、smalldate フィールドを使用すると問題が発生することがあります。

mssql.datetimeconvert = On

freetds.confファイルで設定してみてください

client charset = UTF-8
text size = 1048576

私がこの問題に直面していて、あなたと共有したい手がかりがないので、これは問題かもしれません。

于 2014-12-09T18:01:05.840 に答える