2012-03-22 217 views
0

我想请从MySQL表容量的最大值和最小值,但每当我尝试,我得到以下错误:警告:当只有一个指定参数,它必须是一个数组

Warning: min(): When only one parameter is given, it must be an array in /campus/campus.php on line 38 Call Stack: 0.0003 352296 1. {main}() /campus/campus.php:0 0.0124 1654304 2. min() /campus/campus.php:38 Warning: max(): When only one parameter is given, it must be an array in /campus/campus.php on line 39 Call Stack: 0.0003 352296 1. {main}() /campus/campus.php:0 0.0125 1654360 2. max() /campus/campus.php:39

这里我正在使用的代码:

$sql= "SELECT MIN(capacity), MAX(capacity) FROM room"; 

$res =& $db->query($sql); 
if (PEAR::isError($res)) { 
    die($res->getMessage()); 
} 

while($row = $res->fetchRow()) 
    { 
     $minCapacity = $row[MIN(capacity)]; 
     $maxCapacity = $row[MAX(capacity)]; 
    } 

echo $minCapacity; 
echo $maxCapacity; 

回答

1
$minCapacity = $row['MIN(capacity)']; 
         ^--   ^-- 

指示的引号丢失。 min()是一个有效的PHP函数,因此您试图将PHP的min函数的结果用作$ row中的数组索引。

+0

没有什么从表中返回和变量$ minCapacity和$ MAXCAPACITY为0 – CJS 2012-03-22 14:56:48

+0

然后做了'的var_dump ($ row)'看看你从fetch调用中得到了什么 – 2012-03-22 14:59:07

+0

在代码中我应该放置var_dump($ row)? – CJS 2012-03-22 15:01:03

0

MIN(容量)和MAX(容量)应该在您的while循环中加引号。

您正在尝试调用php函数max和min(如果只给出一个参数,则需要一个数组),而不是引用sql查询的结果。

+0

:(接听首先获得无分! – Arth 2012-03-22 15:39:23

0

MIN和MAX被解析器解释为PHP函数。尝试将它们用引号括起来,将它们作为$ row中的映射关键字(假设它们在查询结果中表示为这样)。

1

也许尝试这样分配的别名你MIN和MAX:

$sql= "SELECT MIN(capacity) AS myMIN, MAX(capacity) AS myMAX FROM room"; 

然后在你的代码执行以下操作:

while($row = $res->fetchRow()) 
    { 
     $minCapacity = $row['myMIN']; 
     $maxCapacity = $row['myMAX']; 
    } 

只是一个想法。

+0

的$ minCapacity和$ MAXCAPACITY似乎都为0。 – CJS 2012-03-22 14:51:03

1

为您的查询创建别名:选择min(capacity)作为minVal。这使得从数组中提取值成为可能。

相关问题