下面的脚本是在db中搜索查询 ($ matric_no),以便返回名称(first,last, 其他名称)和其他学生信息。如果它只是它的工作正常 返回一行,但只要返回两行或更多行 名称(对于所有行都是相同的)也与返回的行数重复相同的次数。我怎么能够 使它只返回学生姓名的单个实例 不管受影响的行没有?
我也尝试过使用LIMT和GROUP BY但无济于事。
我在手机上打字,因此格式不规则。我的意思是不要不尊重社区。 p>
提前致谢。
<?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 />";
}
}
?>
答案 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++)