我正在尝试创建一个条件,其中代码检查DB中是否存在电话号码,然后检查用户名。
$query1 = "SELECT `Phone` FROM `NewUser` WHERE Phone=?";
$query2 = "SELECT `Username` FROM `NewUser` WHERE Username=?";
// checks the Phone number existence
if($stmt = $LINK->prepare($query1)){
$stmt->bind_param("s", $Phone);
if($stmt->execute()){
$stmt->store_result();
$Phone_check= "";
$stmt->bind_result($Phone_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Phone already exists.";
die();
}
}
}
// checks the Username existence
elseif($stmt2 = $LINK->prepare($query2)){
$stmt2->bind_param("s", $User);
if($stmt2->execute()){
$stmt2->store_result();
$User_check= "";
$stmt2->bind_result($User_check);
$stmt2->fetch();
if ($stmt2->num_rows == 1){
echo "That Username already exists.";
die();
}
}
}
如果第一个条件为真,我会得到那个电话已经存在,但是如果第二个条件发生,我会得到一个白页。
交换条件时,我得到“该用户名已存在”。
正如注释中所指出的if($stmt = $LINK->prepare($query1))
,无论记录是否存在,注释都将返回true。您需要删除所有这些if
语句并简化代码。
如果您不需要将数据提取到PHP中以将其用于其他用途,那么绝对没有理由将其提取。您可以仅使用SQL检查该行是否存在。由于这两个列都属于同一个表,因此您也可以在单个语句中执行此操作。
$stmt = $LINK->prepare("SELECT COUNT(*) FROM `NewUser` WHERE Phone=? OR Username=?");
$stmt->bind_param("ss", $Phone, $User);
$stmt->execute();
$stmt->bind_result($exists);
$stmt->fetch();
if ($exists) {
echo "The phone number or the username already exists.";
die();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句