0
我有一段代碼,它執行幾個查詢,如果從前兩個查詢中找到一行,那麼它將顯示驗證錯誤,如果沒有找到來自2個查詢的行,那麼它執行插入和另一個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>";
}
}
我有但問題是,我想如果滿足這兩個驗證錯誤在同一時間同時顯示驗證錯誤。目前它只能一次顯示驗證錯誤。如果兩個驗證錯誤都符合,我怎樣才能同時顯示兩個驗證錯誤?
下面是它存儲的形式驗證錯誤代碼:
$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;