Php 如何显示所有验证错误,而不是一次显示一个验证错误?

Php 如何显示所有验证错误,而不是一次显示一个验证错误?,php,mysqli,Php,Mysqli,我在下面有一段代码,其中它执行了两个查询,如果在前两个查询中的一个查询中找到了一行,那么它将显示验证错误,如果在这两个查询中没有找到行,那么它将执行一个insert和另一个SELECT查询: // don't use $mysqli->prepare here $query = "SELECT StudentUsername FROM Student WHERE StudentUsername =

我在下面有一段代码,其中它执行了两个查询,如果在前两个查询中的一个查询中找到了一行,那么它将显示验证错误,如果在这两个查询中没有找到行,那么它将执行一个insert和另一个SELECT查询:

                                       // don't use $mysqli->prepare here
       $query = "SELECT StudentUsername FROM Student WHERE StudentUsername = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("s",$getusername);
       // execute query
       $stmt->execute(); 
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbStudentUsername);
       //get number of rows
       $stmt->store_result();
       $numrows = $stmt->num_rows();

       $aliasquery = "SELECT StudentAlias FROM Student WHERE StudentAlias = ?";
       // prepare query
       $aliasstmt=$mysqli->prepare($aliasquery);
       // You only need to call bind_param once
       $aliasstmt->bind_param("s",$getalias);
       // execute query
       $aliasstmt->execute(); 
       // get result and assign variables (prefix with db)
       $aliasstmt->bind_result($dbStudentAlias);
       //get number of rows
       $aliasstmt->store_result();
       $aliasnumrows = $aliasstmt->num_rows();

    if ($aliasnumrows == 0){
       if ($numrows == 0){

              $formatdate = date("Y-m-d",strtotime($getdob));
              $studentpassword = md5(md5("93w".$studentpassword."ed0"));  


              $insertsql = "
            INSERT INTO Student
                (StudentForename, StudentSurname, StudentAlias, StudentUsername, StudentPassword, StudentDOB, Year, CourseId)
              VALUES
                (?, ?, ?, ?, ?, ?, ?, ?)
            ";
            if (!$insert = $mysqli->prepare($insertsql)) {
              // Handle errors with prepare operation here
            }                                           

            $insert->bind_param("ssssssis", $getfirstname, $getsurname, $getalias, $getusername, $studentpassword, $formatdate, $getyear, $getcourse);

            $insert->execute();

            if ($insert->errno) {
              // Handle query error here
            }

            $insert->close();

             // don't use $mysqli->prepare here
       $query = "SELECT StudentUsername FROM Student WHERE StudentUsername = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("s",$getusername);
       // execute query
       $stmt->execute(); 
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbStudentUsername);
       //get number of rows
       $stmt->store_result();
       $numrowsstmt = $stmt->num_rows();

        }else{
        $errors['username'] = "<span style='color: red'>There is already a Student with that Username</span>";
        }

        }else{
        $errors['alias'] = "<span style='color: red'>There is already a Student with that Alias</span>";
        }
    }
//不要使用$mysqli->在这里准备
$query=“从StudentUsername=?”的学生中选择StudentUsername”;
//准备查询
$stmt=$mysqli->prepare($query);
//您只需要调用bind_param一次
$stmt->bind_参数($s',$getusername);
//执行查询
$stmt->execute();
//获取结果并分配变量(前缀为db)
$stmt->bind_结果($dbStudentUsername);
//获取行数
$stmt->store_result();
$numrows=$stmt->num_rows();
$aliasquery=“从StudentAlias=?”中选择StudentAlias;
//准备查询
$aliasstmt=$mysqli->prepare($aliasquery);
//您只需要调用bind_param一次
$aliasstmt->bind_参数($s',$getalias);
//执行查询
$aliasstmt->execute();
//获取结果并分配变量(前缀为db)
$aliasstmt->bind_result($dbStudentAlias);
//获取行数
$aliasstmt->store_result();
$aliasnumrows=$aliasstmt->num_rows();
如果($aliasnumrows==0){
如果($numrows==0){
$formatdate=日期(“Y-m-d”,标准时间($getdob));
$studentpassword=md5(md5(“93w”。$studentpassword.ed0”);
$insertsql=”
插入学生
(StudentForName、StudentName、StudentAlias、StudentUsername、StudentPassword、StudentDOB、Year、CourseId)
价值观
(?, ?, ?, ?, ?, ?, ?, ?)
";
if(!$insert=$mysqli->prepare($insertsql)){
//在此处使用prepare操作处理错误
}                                           
$insert->bind_参数(“SSSS是”、$getfirstname、$GetNames、$getalias、$getusername、$studentpassword、$formatdate、$getyear、$getcourse);
$insert->execute();
如果($insert->errno){
//在此处处理查询错误
}
$insert->close();
//不要使用$mysqli->在此处准备
$query=“从StudentUsername=?”的学生中选择StudentUsername”;
//准备查询
$stmt=$mysqli->prepare($query);
//您只需要调用bind_param一次
$stmt->bind_参数($s',$getusername);
//执行查询
$stmt->execute();
//获取结果并分配变量(前缀为db)
$stmt->bind_结果($dbStudentUsername);
//获取行数
$stmt->store_result();
$numrowstmt=$stmt->num_行();
}否则{
$errors['username']=“已有一名学生使用该用户名”;
}
}否则{
$errors['alias']=“已有一名学生使用该别名”;
}
}
但我遇到的问题是,如果两个验证错误都满足,我希望同时显示这两个验证错误。目前,它一次只显示一个验证错误。如果两个验证错误都满足,如何将两个验证错误显示在一起

下面是将验证错误存储在表单中的代码:

$error_alias= (!empty($errors['alias']))?$errors['alias']:"";
$error_username = (!empty($errors['username']))?$errors['username']:"";

$form = "
<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>
  <table>
  <tr>
  <td>Alias:</td>
  <td><input type='text' name='alias' value='$getalias' /><br/>".$error_alias."</td>
  </tr>
  <tr>
  <td>Username:</td>
  <td><input type='text' name='studentusername' value='$getusername' /><br/>".$error_username."</td>
  </tr>
  <tr>
  <td></td>
  <td><input type='submit' value='Register' name='registerbtn' /></td>
  </tr>
  </table>
  </form>";

  echo $form;
$error\u alias=(!empty($errors['alias'])?$errors['alias']:“”;
$error_username=(!empty($errors['username'])?$errors['username']:“”;
$form=”
别名:

“$error\u别名。” 用户名:
“$error\u用户名。” "; 回声$形式;
您可以稍微更改if语句:

if ($aliasnumrows == 0 && $numrows == 0){
    //Do stuff
}else{
    if($aliasnumrows){
        $errors['alias'] = "<span style='color: red'>There is already a Student with that Alias</span>";
    }
    if($numrows){
        $errors['username'] = "<span style='color: red'>There is already a Student with that Username</span>";
    }
}
if($aliasnumrows==0&&$numrows==0){
//做事
}否则{
如果($aliasnumrows){
$errors['alias']=“已有一名学生使用该别名”;
}
如果($numrows){
$errors['username']=“已有一名学生使用该用户名”;
}
}