$name = $_GET['user'];
if(isset($_GET['user']) && strlen($_GET['user'])>0) {
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);
$stmt = $mysqli->prepare("SELECT username FROM users WHERE username=?");
$stmt->bind_param('s', $name);
$stmt->execute();
while($stmt->fetch()) {
if($stmt->num_rows == 0) {
header("Location: home?errormsg=notfound");
exit();
}
}
$stmt->store_result();
$stmt->close();
}
$mysqli->close();
所以,上面的代碼檢查$ _GET [「名」]存在於數據庫中,如果沒有,重定向到家裏ERRORMSG = NOTFOUND,但它重定向用戶名它存在於數據庫中的鏈接'home?errormsg = notfound'。你能提出一種解決這個問題的方法嗎?PHP - 庫MySQLi預處理語句
爲什麼不檢查與count語句的存在? 'SELECT COUNT(*)AS uncnt FROM users WHERE username =?'。它和選擇用戶名本身一樣快(你基本上扔掉了),並且在語義上更加明確你想要做什麼。 –