首页 > 解决方案 > 如何检查用户名是否已经被ajax和sql使用?

问题描述

我正在尝试使用 ajax 检查数据库中是否存在用户名。我不知道为什么它不起作用我尝试了很多东西但仍然一无所获。

这是我实际尝试的代码。php 代码有效,但不将结果发送到 ajax 函数

html >注册.php

<input class="form-control" onblur="checkUser()" id="Pseudo" type="text name="Pseudo" value="" required>" 
 <span id="availability" name="availability" value="">  </span>

php >Welcome.php

if(!empty($_POST['Pseudo']))
{

    $pseudo = $_POST['Pseudo'];

    $connexion = mysqli_connect('localhost', 'root', '', 'database');

        if(!$connexion)
        {
            die('Error during connexion ');
        }

    $sql = "SELECT * FROM Web_database WHERE Pseudo='$pseudo'";

    $result = mysqli_query($connexion, $sql);
    echo  mysqli_num_rows($result);

}

Javascript > 注册.php

    function checkUser()
    {
        var Pseudo = $('#Pseudo').val();

          $.ajax({
            url:'Welcome.php',
            method:"POST",
            data:{Pseudo:Pseudo},

             success:function(data)
             {
                  if(data == '0')
                    { 
                       $('#availability').html('Pseudo correcte');
                    }
                    else
                    {
                        $('#availability').html('Pseudo déja utilisé');
                    }

            }


    });

}

标签: javascriptjqueryajax

解决方案


首先,您可能可以优化您的 SQL:

$sql = "SELECT COUNT(*) FROM Web_database WHERE Pseudo='$pseudo'"

而不是使用mysqli_num_rows().

除非您使用准备好的语句,否则您也会对 SQL 注入敞开心扉。

至于你的AJAX,好像没有错。我发现这个问题非常相似,所以你可能想检查一下。如有疑问,console.log()请查看 PHP 的响应以查看实际返回的内容。或者更好的是,添加一个断点


推荐阅读