2011-06-22 106 views
0

我有一個PHP腳本,應該生成基於MS SQL數據庫的圖像(具體來說,爲我們的第一年學生問候卡)。出於某種原因,在結果資源中的行耗盡之後,mssql_fetch_array()會返回到結果的開頭,而不是返回false。誰能告訴我爲什麼會這樣?mssql_fetch_array不會返回false?

由於MS SQL Server修改標點符號的習慣,實際的消息位於服務器上的.txt文件中。數據庫字段是id | fname | sname | tutgrp | house。代碼

相關部分:

$dbConn = mssql_connect($dbHost, $dbUser, $dbPass) or die("Connection to database failed"); 
mssql_select_db($dbData, $dbConn) or die("Unable to select database"); 

$query = "SELECT * FROM newIntakeTest;"; 
$result = mssql_query($query, $dbConn) or die("Unable to query"); 

while(False !== ($row = mssql_fetch_assoc($result))) 
{ 
    array_walk($row, 'trim_value'); 
    echo $row["sname"].", ".$row["fname"]."... "; 
    $image = imagecreatefrompng("res/".$row["house"].".png"); 
    $black = imagecolorallocate($image,0,0,0); 
    //tutor msg 
    imagettftext($image, 35, 0, 57, 86, $black, $fontBold, "Message from your Tutor:"); 
    $fn = "in/".$row["tutgrp"].".txt"; 
    $fh = fopen($fn,'r'); 
    $tutormsg = fread($fh,filesize($fn)); 
    fclose($fh); 
    imagettftext($image, 35, 0, 57, 139, $black, $fontStd, wrap(35,0,$fontStd,$tutormsg,1640)); 

    //HoH msg 
    imagettftext($image, 35, 0, 57, 1399, $black, $fontBold, "A message from ".$heads[$row["house"]].", Head of ".$row["house"]." house:"); 
    $fn = "in/".$row["house"].".txt"; 
    $fh = fopen($fn,'r'); 
    $headmsg = fread($fh,filesize($fn)); 
    fclose($fh); 
    imagettftext($image, 35, 0, 57, 1455, $black, $fontStd, wrap(35,0,$fontStd,$headmsg,1640)); 

    printaligned($image, "To: ".$row["fname"]." ".$row["sname"], $fontStd, 70, 450, $black); 
    printaligned($image, "From: ".substr($row["house"],0,1)."-".$row["tutgrp"], $fontStd, 70, 1985, $black); 
    printaligned($image, $row["house"]." House", $fontStd, 70, 2130, $black); 

    imagepng($image,"out/".$row["id"]."_".$row["sname"]."_".$row["fname"].".png"); 
    echo "done.<br />"; 
    imagedestroy($image); 

} 
+0

似乎什麼手冊說。 Bu'False!=='是多餘的。 PHP能夠在布爾上下文中評估數組。 – mario

回答

0

更改的,同時:

while($row = mssql_fetch_assoc($result)) 

您使用虛假,不假 - 這將導致一個問題。

0

我認爲典型的慣例是隻

while($row = mssql_fetch_assoc($result))