php - 如何在此 php 脚本中输出平均值和总计

标签 php mysql

我有这个 php 脚本,

  //mysql_connect

   $sql2 ="SELECT stdreg_exam.*,  
   (mathematics+english+kiswahili+geograph+civics+french+religion+pds+
   vskill+ict+science+history)/12 as Average FROM stdreg_exam 
         WHERE fname like '%".$fname."%' AND exam_name like '%".$exam_name."%'AND   
   class like '%".$class."%' AND date like '%".$date."%'";

$sql3 ="SELECT stdreg_exam.*,  
   (mathematics+english+kiswahili+geograph+civics+french+religion+pds+vskill+ict
   +science+history) as Total FROM stdreg_exam 
         WHERE fname like '%".$fname."%' AND exam_name like '%".$exam_name."%'AND   
    class like '%".$class."%' AND date like '%".$date."%'";


    $q=mysql_query($sql);
$q=mysql_query($sql3) AND $q=mysql_query($sql2);

         }
  else{
  $sql="SELECT * FROM stdreg_exam";
  $q=mysql_query($sql);
     }
  ?>


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

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

<td><input type="submit" name="submit" value="Search" /></td>
 </tr>
 </table>
  <br />
  </form>
  <table>
   <h4>
        <?php echo $exam_name;?>&nbsp;examinaton result of&nbsp;<?php echo $fname;?>
        &nbsp;held on&nbsp;<?php echo $date;?></h4><hr> 
      <table width="1110" border="0" cellpadding="2" cellspacing="1" >
    <tr>
    <td bgcolor="#CCCCCC" width="2000">Student name</td>
     <td bgcolor="#CCCCCC" width="10">Mathematics</td>
      <td bgcolor="#CCCCCC" width="10">English</td>
       <td bgcolor="#CCCCCC" width="10">Kiswahili</td>
        <td bgcolor="#CCCCCC" width="10">Geograph</td>
        <td bgcolor="#CCCCCC" width="10">Civics</td>
          <td bgcolor="#CCCCCC" width="10">French</td>
          <td bgcolor="#CCCCCC" width="10">Religion</td>
            <td bgcolor="#CCCCCC" width="10">Pds</td>
             <td bgcolor="#CCCCCC" width="10">Vskill</td>
             <td bgcolor="#CCCCCC" width="10">Ict</td>
              <td bgcolor="#CCCCCC" width="10">Science</td>
                <td bgcolor="#CCCCCC" width="10">History</td>
                 <td bgcolor="#CCCCCC" width="10">Average</td>
                  <td bgcolor="#CCCCCC" width="10">Total</td>
    <td bgcolor="#CCCCCC" width="10">Exam_name</td>
    <td bgcolor="#CCCCCC" width="1000">Class</td>
    <td bgcolor="#CCCCCC" width="1000">Date</td>
    </tr>
    <?php
     while($res=mysql_fetch_array($q)){
    ?>

     <tr>
     <td width="100"><?php echo $res['fname'];?></td>
     <td width="10"><?php echo $res['mathematics'];?>%</td>
     <td width="10"><?php echo $res['english'];?>%</td>
     <td width="10"><?php echo $res['kiswahili'];?>%</td>
     <td width="10"><?php echo $res['geograph'];?>%</td>
     <td width="10"><?php echo $res['civics'];?>%</td>
    <td width="10"><?php echo $res['french'];?>%</td>
    <td width="10"><?php echo $res['religion'];?>%</td>
    <td width="10"><?php echo $res['pds'];?>%</td>
    <td width="10"><?php echo $res['vskill'];?>%</td>
    <td width="20"><?php echo $res['ict'];?>%</td>
    <td width="10"><?php echo $res['science'];?>%</td>
    <td width="10"><?php echo $res['history'];?>%</td>
    <td width="30"><?php echo $res['Average']; ?></td>
    <td width="30"><?php echo $res['Total']; ?></td>
    <td width="10"><?php echo $res['exam_name'];?></td>
    <td width="30"><?php echo $res['class'];?></td>

    <td width="280" style="border-width:medium"><?php echo $res['date'];?></td>
   </tr>
     <?php }?>

问题是当我运行脚本时,当这个脚本像这样排列时,我只能得到“平均值” mysql_query($sql3) AND $q=mysql_query($sql2); 但是当我改变时像这样的脚本 $q=mysql_query($sql2) AND mysql_query($sql3) 我只得到总计,而且我想同时得到平均值和总计。 任何人都可以帮助我。

提前谢谢你。

最佳答案

您正在尝试使用 AND 执行两个多个查询。这是不正确的。

$q = mysql_query($sql3) AND $q=mysql_query($sql2);

考虑以下示例:

$var = 'one' AND 'two';
var_dump($var); // => one

如您所见,下面的代码将始终输出one。这是因为运算符优先级。您可以在PHP Manual中阅读更多相关信息。 。

使用解决此问题的一个好主意是先获取总计,然后使用 PHP 计算平均值:

$q = mysql_query($sql3);

现在,要获得平均值,您只需将其除以受试者总数即可:

<td width="30"><?php echo $res['Total'] / 12; ?></td>

旁注:您的查询容易受到 SQL 注入(inject)的攻击,您应该在将用户输入插入查询之前正确转义用户输入。我建议使用 MySQLi/PDO 来运行参数化 SQL 查询。这不仅可以防止 SQL 注入(inject),还可以加快查询速度。

关于php - 如何在此 php 脚本中输出平均值和总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027065/

相关文章:

mysql - 从 MySQL SELECT 中删除数字

mysql - 从数据库中获取特定订单的订单 ID 的查询是什么

java - 没有 XML 的 Spring + Hibernate。错误 : NoSuchBeanDefinitionException

php - 将 friend 模型添加到属于许多关系

php - utf8网站和latin1数据库表字段

php - 登录php后重定向到首页

php - 如何在MySQL中进行多项计算?

php - MySQL - 从大表中选择随机行

javascript - 如何将javascript作为函数参数

php - 多个sql查询运行问题