首页 > 解决方案 > PHP 表单/准备好的语句错误

问题描述

我正在创建一个用户注册表单,但我对准备好的语句有疑问。如果我exit();在代码中添加一个,注册将不会导致任何地方。如果我不添加exit();,表单将显示正确的错误消息,然后在第二次尝试时将其关闭。

另外,另一个(菜鸟)问题,我如何为已经注册的电子邮件实现错误消息?我添加了$sql = "SELECT * FROM users WHERE user_name=? AND user_email=?";mysqli_stmt_bind_param($stmt, "ss", $name, $email);但我无法显示错误消息。

到目前为止,对于准备好的语句问题:

else {
        $sql = "SELECT * FROM users WHERE user_name=?";
        $stmt = mysqli_stmt_init($con);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../index.php?sqlerror");
            exit();
        }

        else {
        mysqli_stmt_bind_param($stmt, "s", $name);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_store_result($stmt);
        $resultCheck = mysqli_stmt_num_rows($stmt);
        if ($resultCheck > 0) {
        array_push($error_array, "Oops! This username is already taken.<br>");
        exit();
        }

标签: phpmysqlmysqliprepared-statement

解决方案


您不需要退出,因为您已经有了问题注册电子邮件的标题:您可以使用函数 num_rows, http ://php.net/manual/pt_BR/mysqli-result.num-rows.php

 $mysqli = new mysqli("localhost","root", "", "tables");
 $query = $mysqli->prepare("SELECT * FROM users WHERE user_name=? AND 
  user_email=?");
 $query->execute();
 $query->store_result();

 $rows = $query->num_rows;

并做一个如果

if($rows>0){
 //message error
}

推荐阅读