当 php 中的第二个条件为真时,我收到一个白页
I recieve a white page when the second condition is true in php
我正在尝试创建一个条件,代码检查数据库中是否存在 phone 号码,然后检查用户名。
$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();
}
}
}
如果第一个条件为真,我得到 phone 已经存在,但如果第二个条件发生,我得到一个白页。
当我交换条件时,我得到 “该用户名已经存在。”
正如评论中指出的那样,无论记录是否存在,if($stmt = $LINK->prepare($query1))
都将 return 为真。您需要删除所有这些 if
语句并简化您的代码。
如果您不需要将数据提取到 PHP 中以将其用于其他用途,那么绝对没有理由提取它。您可以使用 SQL 检查该行是否存在。由于两列属于相同的 table,您也可以在一个语句中完成。
$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();
}
我正在尝试创建一个条件,代码检查数据库中是否存在 phone 号码,然后检查用户名。
$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();
}
}
}
如果第一个条件为真,我得到 phone 已经存在,但如果第二个条件发生,我得到一个白页。
当我交换条件时,我得到 “该用户名已经存在。”
正如评论中指出的那样,无论记录是否存在,if($stmt = $LINK->prepare($query1))
都将 return 为真。您需要删除所有这些 if
语句并简化您的代码。
如果您不需要将数据提取到 PHP 中以将其用于其他用途,那么绝对没有理由提取它。您可以使用 SQL 检查该行是否存在。由于两列属于相同的 table,您也可以在一个语句中完成。
$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();
}