2012-06-08 3 views
1

У меня необычная проблема с моим время цикла,PHP MSSQL в то время как петли

вот код:

$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.

Заранее благодарим за любые советы!

+0

Просмотреть источник страницы вашего выходного html. Что ты видишь? Вы не избегаете значений для вывода html, так что вы можете получить разбитую разметку. 'htmlspecialchars ($ row ['Note'])' –

+0

Я ничего не вижу,

Mike

+0

Есть ли способ остановить цикл while, чтобы увидеть код ошибки? по крайней мере, чтобы получить представление о том, что вызывает это? – Mike

ответ

0

, если вы используете FreeTDS в качестве водителей затем некоторое время с smalldate полей его создать некоторые проблемы, которые вы можете сделать одну вещь, чтобы быть уверенным, идти к вам php.ini и попробовать переключая

mssql.datetimeconvert = On 

и в ваших FreeTDS. конф файл попытаться установить

client charset = UTF-8 
text size = 1048576 

это может быть проблемой, так как вы не имеете никакого понятия, с которыми я сталкиваюсь этот вопрос и хочу поделиться с вами.

Смежные вопросы