数组中的数据重复


Duplicate data from array

代码为:

<?php
// my query
if (isset($_GET['ssiptype']))
{
    if (($_GET['ssiptype']) == 'gma'){
        $query = "SELECT location, year, serviceArea, noOfBenificiaries, stat, fundingSrc, projCost 
            FROM swipdd
            WHERE fundingSrc LIKE 'GMA-Rice%' AND ssiptype = 'SWIP'" ;
    }
    elseif (($_GET['ssiptype']) == 'am'){
        $query = "SELECT location, year, serviceArea, noOfBenificiaries, stat, fundingSrc, projCost 
            FROM swipdd
            WHERE fundingSrc LIKE 'AM-Rice%' AND ssiptype = 'SWIP'" ;
    }
    elseif (($_GET['ssiptype']) == 'hvcccred'){
        $query = "SELECT location, year, serviceArea, noOfBenificiaries, stat, fundingSrc, projCost 
            FROM swipdd
            WHERE fundingSrc LIKE 'HVCC RED%' AND ssiptype = 'SWIP'" ;
    }
    elseif (($_GET['ssiptype']) == 'hvcc'){
        $query = "SELECT location, year, serviceArea, noOfBenificiaries, stat, fundingSrc, projCost 
            FROM swipdd
            WHERE fundingSrc LIKE 'HVCC%' AND ssiptype = 'SWIP'" ;
    }
    else{}
}
// output
if (isset($query))
{
  $result = mysql_query($query) or die(mysql_error()); 
  echo "<table border='1' cellpadding='3'>";
  echo "<tr> 
            <td bgcolor='"#DFE8EC'">LOCATION</td>
            <td bgcolor='"#DFE8EC'">YEAR</td>
            <td bgcolor='"#DFE8EC'">STATUS</td>
        </tr>";
  while($row = mysql_fetch_array( $result )) {
  $final_result = array_unique($row);
    echo "<tr>";
    echo '<td>' . $row['location'] . '</td>';
    echo '<td>' . $row['year'] . '</td>';
    echo '<td>' . $row['stat'] . '</td>';
    echo "</tr>"; 
  } 
  echo "</table>";
}
?>

我想要的输出如下:

//dummy data
LOCATION    YEAR   STATUS
---------------------------
park         1999   ok
----------------------------
sea          2000   fine
----------------------------

我得到这个输出:

LOCATION    YEAR   STATUS
----------------------------
park         1999   ok
----------------------------
sea          2000   fine
----------------------------
park         1999   ok
----------------------------
sea          2000   fine
----------------------------
park         1999   ok
----------------------------
sea          2000   fine
----------------------------

它重复了两次。我的代码出了什么问题?请帮忙,我们将不胜感激。

非常感谢。

  1. 只选择您需要的列
  2. 为了不得到多个整数,你需要一些额外的限定符。我假设您希望显示最近的年份,所以我们可以使用GROUP BY来选择不同的位置,并使用ORDER BY来显示最近的一年
  3. 代码很难看。。。当您可以用jsut替换更改的部分时,您可以不断重复相同的SQL

所以把它们放在一起

<?php 
$fundingSrcs = array(
  'gma' => 'GMA-Rice%',
  /* repeat for your other options */
);
$sql = "SELECT location, year, stat 
       FROM swipdd
       WHERE fundingSrc LIKE %s AND ssiptype = 'SWIP'
       ORDER BY year DESC
       GROUP BY location";
$result = false; // initialize as a default of false
if(isset($_GET['ssiptype']) {
   $ssitype = $_GET['ssiptype'];
   if(isset($fundingSrcs[$ssitype]) {
      // substitute the db quoted string for the %s
      $query = sprintf($sql, mysql_real_escape_string($fundingSrcs[$ssitype]));
      $result = mysql_query($query) or die(mysql_error());
   }
}
?>
<?php if($result && mysql_num_rows($result)): ?>
  <table border='1' cellpadding='3'>
    <thead>
      <tr>
        <th bgcolor="#DFE8EC">LOCATION</th>
        <th bgcolor="#DFE8EC">YEAR</th>
        <th bgcolor="#DFE8EC">STATUS</th>
      </tr>
    </thead>
    <tbody>
    <?php while ($row = mysql_fetch_array($result)): ?>
      <tr>
        <td><?php echo $row['location'] ?></td>
        <td><?php echo $row['year'] ?></td>
        <td><?php echo $row['stat'] ?></td>
      </tr>
    <?php endwhile; ?>
    </tbody>
  </table>
<?php else if($err = mysql_error()): ?>
  <p>There was an error executing this request.</p>
<?php else: ?>
  <p>No matching entries found</p>
<?php endif; ?>

使用mysql_fetch_assoc,而不是mysql_fetch_array

试着向数据库询问不同的数据,而不是让PHP过滤掉。强调单词distinct(这是你谷歌的提示…)。