我有一個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);
}
似乎什麼手冊說。 Bu'False!=='是多餘的。 PHP能夠在布爾上下文中評估數組。 – mario