一个函数内的Mysql函数我错过了什么

时间:2014-02-26 23:08:33

标签: php mysql arrays function row

可以让它显示即使在phpMyAdmin它运行正常并给我平均值,但当我在网页上运行它不显示表

<?php
 echo "<table border='1' style='border-collapse: collapse;border-color: silver;'>";
 echo "<tr style='font-weight: bold;'>";
 echo "<td width='200' align='center'>Avrage Age*</td>";
 echo "</tr>";
include("dbopen.php");
$result = mysql_query("

 SELECT AVG(Age) 
 FROM(
 SELECT N, Dob, Age
 FROM (
 SELECT N, Dob, CURDATE( ) , (
 YEAR( CURDATE( ) ) - YEAR( F ) 
 ) - ( RIGHT( CURDATE( ) , 5 ) < RIGHT( F, 5 ) ) AS Age
 FROM tableages_)alias
 WHERE Age BETWEEN 18 AND 65) As agea ");

 while($row=mysql_fetch_array($result))

  {  
 echo "<tr>";  
 echo "<td align='center' width='200'>" . $row['agea'] . "</td>";  
  echo "</tr>";  
   }  
 echo "</table>";  
 ?>

1 个答案:

答案 0 :(得分:1)

你可以在sql:

中进行一些小修改
SELECT
    AVG(Age) as agea
FROM 
    (
        SELECT
            N,
            Dob,
            CURDATE( ) ,
            (YEAR( CURDATE( ) ) - YEAR( F )) - ( RIGHT( CURDATE( ) , 5 ) < RIGHT( F, 5 ) ) AS Age
        FROM tableages_
    ) alias
WHERE Age BETWEEN 18 AND 65

您应该使用mysql_fetch_assoc将结果设为$row['agea']。哦,并且只有一行,所以不要使用while循环,这是没有必要的。

顺便说一下,我不建议您使用mysql驱动程序,它已经过时并且存在安全问题。您应该使用PDO driver代替。在那里你应该在你的陈述中使用一个获取列。