2013-11-26 42 views
1

我有这个PHP查询,从许多表(从婴儿班到标准七),以便我可以得到每个表的总和形式SUM。如何删除此警告这个PHP脚本

但是当我运行查询它给了我警告说

Warning: mysql_fetch_array() expects 
parameter 1 to be resource, boolean given in 
C:\wamp\www\db_valentine_V2\Templates\school_income.php on line 872 

我试图在有这个脚本

while($res=mysql_fetch_array($q)){ 

任何一个可以帮我删除此行872理清警告,它的真实需要很长时间没有任何成功。

<?php 

$date="date"; 
$class="class"; 
$database=("mcl"); 
mysql_connect("localhost","root","mcl"); 
@mysql_select_db(mcl) or die("Unable to select database"); 


if(isset($_REQUEST['submit'])){ 
$class=$_POST['class']; 
$date=$_POST['date']; 


$sql="SELECT SUM(Total) FROM 
    (SELECT  
    SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee+ 
    uniform_fee+sport_uniform) As Total FROM payment UNION 

    SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+ 
    food_fee+uniform_fee+sport_uniform) As Total FROM payment_one UNION 
    SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee 
    +uniform_fee+sport_uniform) As Total 
     FROM payment_two UNION 
    SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee 
    +uniform_fee+sport_uniform) As Total 
     FROM payment_three UNION 
    SELECT 
SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee+ 
uniform_fee+sport_uniform) As Total 
     FROM payment_four UNION 
    SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee+ 
    uniform_fee+sport_uniform) As Total 
     FROM payment_five UNION 
SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee+ 
uniform_fee+sport_uniform) As Total 
     FROM payment_six UNION 
SELECT SUM(school_fee+trans_fee+reg_fee+edutrip_fee+stationery_fee+food_fee+ 
uniform_fee+sport_uniform) As Total 
     FROM payment_seven)a)"; 


$q=mysql_query($sql); 

    } 

    ?> 


<form method="post"> 
<table width="500" border="0"> 
<tr> 
<td>Class</td> 
<td><input type="text" name="class" value="<?php echo $class;?>" /></td> 

<td>Year</td> 
<td><input type="number" name="date" value="<?php echo $date;?>" /></td> 

<td><input type="submit" name="submit" value="Search" /></td> 
</tr> 
</table> 
<br /> 
    </form> 
    <table> 
    <h4> 
    This is total amount of money payed by&nbsp;<?php echo $class;?> &nbspclass  
    in&nbsp<?php echo $date;?>&nbsp;</h4><hr> 
    <table width="700" border="0" height="2" cellpadding="0" cellspacing="1" > 
    <tr> 
    <td bgcolor="#FF9900" width="50">Class</td> 
    <td bgcolor="#FF9900" width="300">Total amount of money payed</td> 

    </tr> 
    <?php 
    while($res=mysql_fetch_array($q)){ 

     ?> 

    <tr> 
    <td width="100"><?php echo $res['class'];?></td> 
    <td width="200"><?php echo $res['SUM(Total)'];?></td> 

    </tr> 

    <?php }?>  



    </table>   
+1

解决您的查询,因为它失败。 – rray

+0

使用$ q = mysql_query($ query)或die(mysql_error()); –

+0

你可以显示'$ q'是什么吗? – putvande

回答

0

尝试:

while(!empty($q) and $res=mysql_fetch_array($q)){ 
+0

你可能是说while(!empty($ q)&& $ res = mysql_fetch_array($ q)){ – J2D8T

+0

是的,它非常有效,谢谢你Mariyo – user3029499

+0

J2D8T:为什么认为** && **比**和**好此解决方案? – Mariyo

0

尝试这样的事情

if($q === FALSE) { 
     die(mysql_error()); // TODO: better error handling 
    } 

while($res=mysql_fetch_array($q)) 
{ 
    //do here 
} 
+0

对不起,我忘了发布代码,但现在好了 – user3029499

1

在代码中的变量$q有没有范围的,如果境外的访问。

所以你需要在if条件之前定义它。在if条件上面添加下面的行。

$q=""; 

和到位的同时,循环利用这一点:

if(!empty($q)) { 
    while($res=mysql_fetch_array($q)){ 
      ----------- 
      your code 
      --------------- 
    } 
}