mysql_fetch_array显示问题

时间:2012-02-07 23:52:21

标签: php mysql

下面的脚本是在db中搜索查询  ($ matric_no),以便返回名称(first,last,  其他名称)和其他学生信息。如果它只是它的工作正常 返回一行,但只要返回两行或更多行  名称(对于所有行都是相同的)也与返回的行数重复相同的次数。我怎么能够   使它只返回学生姓名的单个实例   不管受影响的行没有?

我也尝试过使用LIMT和GROUP BY但无济于事。

我在手机上打字,因此格式不规则。我的意思是不要不尊重社区。

提前致谢。

<?php session_start(); ?>
  <?php require('includes/dbconnect.php'); ?>
 <?php require 'includes/header.inc.php'; ?>
<?php
 $matric_no = mysql_real_escape_string($_POST['matric_no']) ;
 if ( $_POST['matric_no'] == "")
{
 echo"<div id=\"contentRight\">";
 echo"<div id=\"msg\">" ;
 echo "You didn't enter a <span style=\"color:red\"> Matric Number</span>";
 echo"</div>" ;
 echo"</div>" ;
  exit();
 }
  $query = "SELECT matric_no
 FROM main_table
     WHERE main_table.matric_no = '$_POST[matric_no]'";
   $result = mysql_query($query) ;
  $duplicates = mysql_num_rows($result);
  if ($duplicates < 1)
{
 echo"<div id=\"contentRight\">";
echo"<idv id=\"msg\">" ;
 echo "You dont have a record for <span style=\"color:red\">
   $matric_no</span>" ;
 echo"</div>" ;
  echo"</div>" ;
  exit();
 }
{
  $query = mysql_query("SELECT main_table.matric_no ,
  main_table.session,
  main_table.semester , main_table.course_name ,
  (test+exam+practical) AS Total,
  students.first_name, students.last_name, students.other_name,
  students.level
  FROM main_table INNER JOIN students ON
  main_table.matric_no = students.matric_no
   WHERE main_table.matric_no = '$_POST[matric_no]'")
  or die (mysql_error());
  while ($row = mysql_fetch_assoc($query)) {
       echo $row["matric_no"] ;                   
  echo "<br />";
  echo $row["session"]; echo "<br />";
  echo $row["semester"];
  echo "<br />";
   echo $row["course_name"];
   echo "<br />";
    echo $row["first_name"];
  echo "<br />";
    echo $row["last_name"];
  echo "<br />";
    echo $row["other_name"];
  echo "<br />";
    echo $row["level"]; echo "<br />";
   }
  }
 ?>

1 个答案:

答案 0 :(得分:0)

这只是对您问题的建议,因为我不知道您要停止复制哪个字段。在这里,我建议你一种方法来停止打印first_name,如果它一次又一次地重复。在这里,您必须确保您的查询也按该值集排序。

请使用此代码。

<强> EDITED

 <?php session_start(); ?>
 <?php require('includes/dbconnect.php'); ?>
 <?php require 'includes/header.inc.php'; ?>
<?php
 $matric_no = mysql_real_escape_string($_POST['matric_no']) ;
 if ( $_POST['matric_no'] == "")
{
 echo"<div id=\"contentRight\">";
 echo"<div id=\"msg\">" ;
 echo "You didn't enter a <span style=\"color:red\"> Matric Number</span>";
 echo"</div>" ;
 echo"</div>" ;
  exit();
 }
  $query = "SELECT matric_no
 FROM main_table
     WHERE main_table.matric_no = '$_POST[matric_no]'";
   $result = mysql_query($query) ;
  $duplicates = mysql_num_rows($result);
  if ($duplicates < 1)
{
 echo"<div id=\"contentRight\">";
echo"<idv id=\"msg\">" ;
 echo "You dont have a record for <span style=\"color:red\">
   $matric_no</span>" ;
 echo"</div>" ;
  echo"</div>" ;
  exit();
 }
{
  $query = mysql_query("SELECT main_table.matric_no ,
  main_table.session,
  main_table.semester , main_table.course_name ,
  (test+exam+practical) AS Total,
  students.first_name, students.last_name, students.other_name,
  students.level
  FROM main_table INNER JOIN students ON
  main_table.matric_no = students.matric_no
   WHERE main_table.matric_no = '$_POST[matric_no]' ORDER BY students.first_name")
  or die (mysql_error());

  $matchingString = "";
  while ($row = mysql_fetch_assoc($query)) {
       echo $row["matric_no"] ;                   
  echo "<br />";
  echo $row["session"]; echo "<br />";
  echo $row["semester"];
  echo "<br />";
   echo $row["course_name"];
   echo "<br />";
   $checkingString = $row["first_name"] . $row["last_name"] . $row["other_name"] . $row["level"];

   if($matchingString != $checkingString)
   {
    echo $row["first_name"];
    echo "<br />";  
    echo $row["last_name"];
  echo "<br />";
    echo $row["other_name"];
  echo "<br />";
    echo $row["level"]; echo "<br />";
    $matchingString = $checkingString;
    }
   }
  }
 ?>

问题修改后的答案

只需改变你的两个循环,然后看看。

for ($i = 0; $i < ($number_cols - 4); $i++)