我只是在学习mysqli准备的语句,现在我遇到了一个问题,无法摆脱它。这是登记表,包括“用户名”“电子邮件”和“密码”。如果数据库中已存在用户名和电子邮件,则不允许注册。我用了post方法,代码是,
//validating email
if(!filter_var($user_email, FILTER_VALIDATE_EMAIL) === true) {
echo "invalid email";
exit();
}
//valid email
else{
//prepared query
$query_name = "SELECT * FROM users WHERE user_name = ?";
$query_email = "SELECT * FROM users WHERE user_email = ?";
//prepared statements
$stmt_name = mysqli_prepare($conn, $query_name);
$stmt_email = mysqli_prepare($conn, $query_email);
//if bind failure
if((!mysqli_stmt_bind_param($stmt_name, "s", $user_name)) && (!mysqli_stmt_bind_param($stmt_email, "s", $user_email))){
echo "bind unsuccessfull";
exit();
}
else{
//if execution fails
if( !mysqli_stmt_execute($stmt_name) && !mysqli_stmt_execute($stmt_email)){
echo "stmt execution failed";
exit();
}
//else if execution success
else{
$result_name = mysqli_stmt_store_result($stmt_name);
$result_email = mysqli_stmt_store_result($stmt_email);
//rows
$row_name = mysqli_stmt_num_rows($stmt_name);
$row_email = mysqli_stmt_num_rows($stmt_email);
echo $row_name;
echo $row_email;
}
}
}
看起来像以前的第一部分 &&
在 if
条件起作用,而第二个条件根本不起作用。我已经尝试注册它与现有的“电子邮件”在数据库中,但结果仍然是0。连接良好,工作正常!任何帮助都将不胜感激>
3条答案
按热度按时间svgewumm1#
与其编写这么多复杂的代码,不如使用单个查询来完成您的工作
nukf8bse2#
我很想使用
or
条件与try/catch
块,以便在某个条件不满足时可以在某些阶段抛出异常。jutyujz03#
$query\u name=“从user\u name=”的用户中选择*?或用户电子邮件=?“;您不需要同时检查两次条件。如果有人将通过电子邮件或用户名登录,则此查询将同时检查用户名和电子邮件。