检查这是否重复 [英] Check if this is duplicate

查看:47
本文介绍了检查这是否重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检查username是否已经存在,如果存在则抛出错误消息,我该怎么做? 我已经尝试搜索,但是只找到mysql_errno,但对我不起作用.

I want to check if the username already exists and throw an error message if exist, any tips how can I do it? I've already tried to search but only found mysql_errno but it won't work for me.

  if ($valid) {
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //$password = md5($password);
        $sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
        $q = $pdo->prepare($sql);
        $q->execute(array($username,$password,$role));
        Database::disconnect();
        header("Location: index.php");
    }

sd

推荐答案

如果要检查username是否已使用:

If you want to check if the username is already used :

SELECT * FROM users WHERE username = :username

如果返回一行:抛出错误,否则执行INSERT

If you return one row : you throw your error, else you do your INSERT

因此您的代码应如下所示:

So your code should look like this :

if ($valid) {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql_check = "SELECT * FROM users WHERE username = :username";
    $test = $pdo->prepare($sql_check);
    $test->bindParam(':username', $username); 
    $test->execute;

现在这是两种解决方案,以检查是否有一行:

Now here is two solution to check if you have one row :

    if($test->rowCount() > 0) {
        // error
    }      

    $user = $test->fetch();

    if (!empty($user)) {
        // error
    }

现在,如果您没有错误,请插入:

And now if you don't have error, do you insert :

    else {
        //$password = md5($password);
        $sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
        $q = $pdo->prepare($sql);
        $q->execute(array($username,$password,$role));
        Database::disconnect();
        header("Location: index.php");
    }
}

这篇关于检查这是否重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆