我的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个字符。虽然它真的只是重复第一个记录。
我还应该指出其中一行是RTF格式,但我认为它不起作用。
我正在从* nix机器连接到MS SQL2005服务器。
提前感谢任何建议!
答案 0 :(得分:0)
如果您使用freetds作为驱动程序,那么有时候使用smalldate字段会产生一些问题,您可以做一件事以确保转到php.ini并尝试切换
mssql.datetimeconvert = On
并在你的freetds.conf文件中尝试设置
client charset = UTF-8
text size = 1048576
这可能是一个问题,因为你没有任何线索我面对这个问题,并希望与你分享。