Php mssql_fetch_数组未返回false?

Php mssql_fetch_数组未返回false?,php,sql-server,Php,Sql Server,我有一个php脚本,它应该基于MS SQL数据库生成图像(特别是针对一年级学生的贺卡)。出于某种原因,在结果资源中的行用完后,mssql_fetch_array()返回结果的开头,而不是返回false。有人能告诉我为什么会这样吗 由于MS SQL server习惯于弄乱标点符号,因此实际的消息是在服务器上的.txt文件中。数据库字段为id | fname | sname | tutgrp | house 代码的相关部分: $dbConn = mssql_connect($dbHost,

我有一个php脚本,它应该基于MS SQL数据库生成图像(特别是针对一年级学生的贺卡)。出于某种原因,在结果资源中的行用完后,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);

}
$dbConn=mssql_connect($dbHost、$dbUser、$dbPass)或die(“与数据库的连接失败”);
mssql_选择_db($dbData,$dbConn)或die(“无法选择数据库”);
$query=“从newIntakeTest中选择*”;
$result=mssql_query($query,$dbConn)或die(“无法查询”);
while(False!=($row=mssql\u fetch\u assoc($result)))
{
数组_walk($row,'trim_value');
echo$row[“sname”]。“,”$row[“fname”]。“…”;
$image=imagecreatefrompng(“res/”$row[“house”]。.png”);
$black=imagecolorallocate($image,0,0,0);
//家教味精
imagettftext($image,35,0,57,86,$black,$fontBold,“来自导师的信息:”);
$fn=“in/”$row[“tutgrp”]。“.txt”;
$fh=fopen($fn,'r');
$tutormsg=fread($fh,文件大小($fn));
fclose($fh);
imagettftext($image,35,0,57,139,$black,$fontStd,wrap(35,0,$fontStd,$tutormsg,1640));
//霍味精
imagettftext($image,35,0,57,1399,$black,$fontBold,“来自“$heads[$row[“house”]”的消息,“$row[“house”]”的标题:);
$fn=“in/”$row[“house”]。.txt”;
$fh=fopen($fn,'r');
$headmsg=fread($fh,文件大小($fn));
fclose($fh);
imagettftext($image,35,0,571455,$black,$fontStd,wrap(35,0,$fontStd,$headmsg,1640));
printaligned($image,“至:”.$row[“fname”]。“.$row[“sname”],$fontStd,70450,$black);
打印对齐($image,“From:”.substr($row[“house”],0,1)。“-”$row[“tutgrp”],$fontStd,701985,$black);
打印对齐($image,$row[“house”]“house”,$fontStd,702130,$black);
imagepng($image,“out/”$row[“id”]。“551;”。$row[“sname”]。“551;”。$row[“fname”]。.png”);
回显“完成,
”; 图像销毁($图像); }
将您的while更改为:

while($row = mssql_fetch_assoc($result))

您使用的是False,而不是False-这会导致问题。

我相信典型的约定只是

while($row = mssql_fetch_assoc($result))

似乎是手册上说的。但是
错误==是多余的。PHP能够在布尔上下文中计算数组。