检查这是否重复

时间:2018-12-20 10:38:52

标签: php mysql

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

  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

4 个答案:

答案 0 :(得分:1)

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

SELECT * FROM users WHERE username = :username

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

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

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;

现在有两种解决方案来检查您是否有一行:

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

    $user = $test->fetch();

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

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

    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");
    }
}

答案 1 :(得分:0)

两种解决方案:

您可以使用户名字段唯一,这样,如果您尝试使用现有用户名插入行,则MYSQL将抛出错误。

cameraTrigger.onclick = function () { (### code ###) }.then(cameraStart())

否则,请使用所需的用户名进行选择,然后查看是否返回行(=已使用)或不返回(=可用)。

$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$result = $q->execute(array($username,$password,$role));
if(!$result) {
    // print out your error message
}

答案 2 :(得分:-2)

SELECT * FROM users WHERE username = $username

如果发现显示错误,则插入

答案 3 :(得分:-2)

 <?php
     $getUniqueUsername=$con->query("select * from user where name='$user_name");
     $rowCount=$getUniqueUsername->num_rows;

     if($rowCount) {          
          $insertQuery=$con->query("insert into table_name (field_name) Values('".$values."'));
     }
?>