function CHECKPENDINGORDERS($con, $oc, $pos){
if(is_resource($con)){
$sql = "SELECT * FROM eats_orders WHERE school_code = '$oc' AND order_status = '$pos'";
$sqlresult = mysql_query($sql);
#$pendingorderrow = mysql_fetch_array($sqlresult);
while($row = mysql_fetch_assoc($sqlresult)){
$a[] = $row;
return $a;
}
}
}
$checkpendingorders = CHECKPENDINGORDERS(MYSQL_LINK, $ordercode, $pendingorderstatus);
print_r($checkpendingorders);我有上面的函数来检索数据库记录,并通过调用函数将其打印出来。但它只打印了1条记录,但我有多条记录具有相同的订单码和待处理订单状态。
发布于 2014-02-19 11:09:39
你需要在最后退还你的$a
<?php
function CHECKPENDINGORDERS($con, $oc, $pos){
if(is_resource($con)){
$sql = "SELECT * FROM eats_orders WHERE school_code = '$oc' AND order_status = '$pos'";
$sqlresult = mysql_query($sql);
#$pendingorderrow = mysql_fetch_array($sqlresult);
while($row = mysql_fetch_assoc($sqlresult)){
$a[] = $row;
//return $a; //<---- Not here
}
}
return $a; //<----- Here
}那是因为...因为您在第一次迭代本身中返回了$a,所以您将获得单行。
发布于 2014-02-19 11:09:19
您需要将return语句移到循环之外。一旦到达该return语句,函数调用就会结束,从而终止循环。
while($row = mysql_fetch_assoc($sqlresult)){
$a[] = $row;
}
return $a;为了进一步改进您的函数,您的函数将抛出一个E_NOTICE错误,因为您在使用它之前没有定义$a。要解决这个问题,只需在函数的顶部将$a定义为一个空字符串。还可以将return语句移到数组的末尾,以便函数始终返回一个数组,即使该数组为空。
function CHECKPENDINGORDERS($con, $oc, $pos){
$a = array();
if(is_resource($con)){
$sql = "SELECT * FROM eats_orders WHERE school_code = '$oc' AND order_status = '$pos'";
$sqlresult = mysql_query($sql);
#$pendingorderrow = mysql_fetch_array($sqlresult);
while($row = mysql_fetch_assoc($sqlresult)){
$a[] = $row;
}
}
return $a;
}https://stackoverflow.com/questions/21870231
复制相似问题