在php表单中的else条件中不返回错误,而在出现错误时尝试返回错误

oknwwptz  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(287)

当username字段为空时,在else条件中不返回空errro;如果条件正常,则在数据库中插入数据,但当我尝试返回错误时,页面变为空白

<?php include "db.php"?>
<?php
if (isset($_POST['submit'])){
global $conn;
$error=array();
$username=$_POST['username'];

if($username==""){
             $error="username is empty";
}
 if(empty($error)){
 $sql="INSERT INTO users (username,password,category)VALUES('$username','$password','$category')";
 $res=mysqli_query($conn,$sql);
 if($res){
     echo "done";
 }else{
     echo "try again";
 }
 }else{
    return $error;
 }
}

?>
<html>
<body>
<fieldset style="width:30%;">
<form action="" method="post" enctype="multipart/form-data">
<label>Username</label>
<input type="text" name="username" placeholder="username" id="username" ><br>
<input type="submit" name="submit" id="submit" value="submit">
</form>
</fieldset>
</body>
</html>
goucqfw6

goucqfw61#

我在执行过程中发现了很多错误,请检查下面的代码。
1) 应该是的 empty($username) 而不是 $username == '' 基本上这不重要,这将是工作的任何一种方法
2) 你有 return $error; 这意味着它只会返回print nothing,所以您需要使用 print_r($error) 没有要返回的函数,因此您可以简单地将错误打印在窗体顶部。
3) 使用参数化查询,而不是传递变量进行查询。
如果仍然不工作,请取消注解,这两行后面的php标记,并检查错误
我为error添加了一个建议,您可以在下面的字段后面显示错误
请检查是否有问题 <span> 刚刚添加的标签 input 和样式错误类,如你想要的颜色边框等。

<?php 

    //error_reporting(-1);
    //ini_set('display_errors',true);
    include "db.php";

    if (isset($_POST['submit'])){
        global $conn;
        $error=array();
        $username=$_POST['username'];
        $password=$_POST['password'];

        if(empty($username)){
            $error['username']="username is empty";
        }
        if(empty($password)){
            $error['password']="password is empty";
        }

        if(empty($error)){
            $sql="INSERT INTO users (username,password,category)VALUES(?, ?, ?)";

            if ($stmt = $mysqli->prepare($sql)) {
                $stmt->bind_param("sss", $username,$password,$category);
                if($stmt->execute())
                    echo "Done";
                else
                    echo "Try Again!";

            }
        } else {
            //print_r($error);
        }
    }

?>
<html>
    <body>
        <fieldset style="width:30%;">
            <form action="" method="post" enctype="multipart/form-data">
                <label>Username</label>
                <input type="text" name="username" placeholder="username" id="username" ><br>
                <span class='error'><?=$error['username']?></span></br />
                <input type="password" name="password" placeholder="password" id="password" ><br>
                <span class='error'><?=$error['password']?></span></br />

                <input type="submit" name="submit" id="submit" value="submit">
            </form>
        </fieldset>
    </body>
</html>
e37o9pze

e37o9pze2#

尝试使用此脚本。

<?php
        if (isset($_POST['submit']))
        {
            global $conn;
            $error=array();
            $username=$_POST['username'];

            if($username == ""){
                $error="username is empty";
            }else{
             $sql="INSERT INTO users (username,password,category)VALUES('$username','$password','$category')";
             $res=mysqli_query($conn,$sql);
             if($res){
                 echo "done";
             }else{
                 echo "try again";
             }
            }
            //THIS IS ARRAY SO YOU HAAVE TO PRINT LIKE THIS
            print_r( $error);

        }

您不需要两次使用else语句,只要检查错误是否为空就可以运行。快乐编码:-)

相关问题