简体   繁体   English

PHP检查用户名是否存在

[英]PHP Check if Username Exists

Ok so when i login on the page i get this error 好的,所以当我登录页面时出现此错误

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a1982502/public_html/test3/register.php on line 55 警告:mysql_num_rows():第55行/home/a1982502/public_html/test3/register.php中提供的参数不是有效的MySQL结果资源

This is the PHP 这是PHP

<?php 
if(isset($_POST['submit'])) {
    $servername = "mysql10.000webhost.com";
    $username = "a1982502_test";
    $password = "";
    $dbname = "a1982502_test";

    $password1 = $_POST['password1'];
    $password2 = $_POST['password2'];
    $username1 = $_POST['username1'];
    $email = $_POST['email'];
    if(!empty($username) && !empty($password1) && !empty($password2) && !empty($email)) {
        if($password1 == $password2) {
            $conn = new mysqli($servername, $username, $password, $dbname);
            //send data
            $sql = "SELECT COUNT(*) FROM users WHERE user = '$username1'";
            if (mysql_num_rows($sql) > 0) {
                echo "Username already exists";
                mysqli_close($conn);
                exit();
            } else {
                $password1 = md5($password1);
                $sql = "INSERT INTO users (id, user, email, pass) VALUES (NULL, '$username1', '$email', '$password1')";
                if (mysqli_query($conn, $sql)) {
                    echo "Registered!";
                }
                mysqli_close($conn);
                exit();
            }           
        } else {
            //error
            Echo "Password is wrong";

            exit();
        }
    }
}
?>

You did not run your query. 您没有运行查询。 After initializing $SQL do this, 初始化$ SQL之后,

$result = mysqli_query($conn, $sql);

Then you can call mysqli_num_rows($result). 然后,您可以调用mysqli_num_rows($ result)。

you need to change your query to select * from instead of select count(*) in order for mysql_num_rows() to work. 您需要更改查询以选择* from而不是select count(*)才能使mysql_num_rows()运行。

I see that your not calling mysql_query() anywhere. 我看到您没有在任何地方调用mysql_query()。 In order for the query to actually run you need to pass this function. 为了使查询实际运行,您需要传递此函数。 You can also use mysqli I havent used classic php in a while so here is an untested sample of something that should work 您也可以使用mysqli,我已经有一段时间没有使用经典的php了,所以这是一些未经测试的示例,应该可以正常工作

<?php 
if(isset($_POST['submit']))
{
    $servername = "mysql10.000webhost.com";
    $username = "a1982502_test";
    $password = "";
    $dbname = "a1982502_test";

    $password1 = $_POST['password1'];
    $password2 = $_POST['password2'];
    $username1 = $_POST['username1'];
    $email = $_POST['email'];

    if(!empty($username) && !empty($password1) && !empty($password2) && !empty($email))
    {
        if($password1 == $password2)
        {
            $conn = new mysqli($servername, $username, $password, $dbname);
            //send data
            $sql = mysql_query("SELECT * FROM users WHERE user = '$username1'");

            if (mysql_num_rows($sql) > 0)
            {
                echo "Username already exists";
                mysqli_close($conn);
                exit();
            } 
            else
            {
                $password1 = md5($password1);
                $sql = mysql_query("INSERT INTO users (id, user, email, pass) VALUES (NULL, '$username1', '$email', '$password1')");

                mysqli_close($conn);
                exit();
            }           
        } 
        else
        {
            //error
            Echo "Password is wrong";
            exit();
        }
    }
}
?>

Make correction like below 进行如下修改

$sql = "SELECT * FROM users WHERE user = '$username1'";   
if ($result=mysqli_query($conn,$sql))
{
  // Check no of rows
  if(mysqli_num_rows($result))
  {
            echo "Username already exists";
            mysqli_close($conn);
            exit();
  }else 
  {
  // Register
            $password1 = md5($password1);
            $sql = "INSERT INTO users (id, user, email, pass) VALUES (NULL, '$username1', '$email', '$password1')";
            if (mysqli_query($conn, $sql))
            echo "Registered!";
            mysqli_close($conn);
            exit();
  }  

}else
{
    // Query failed
    echo("Error description: " . mysqli_error($conn));
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM