避免在MySql中重复。

时间:2015-05-30 07:29:09

标签: php mysql pdo

我无法在我的php网站中找到拒绝相同用户帐户的方法,而且我很难使用其他制作的代码。我尝试在phpmyadmin中使用 unique ,但是在拒绝它之后它给了我一个错误。这是代码:

<?php
include '../layout/header.php';
if(isset($_POST['submit'])) {


$email = $_POST['email'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];


if($pass1 == $pass2){


    $uname = $_POST['uname'];
    $email = $email;
    $pass1 = $pass1;
    $pass2 = $pass2;      

    include '../DB/DB.php';

    $db = new DB;


    $db->__set('username','root');
    $db->__set('password','');
    $db->__set('dsn','mysql:host=localhost;dbname=login;');
    $db->conn();

    $aData = array();
    $aData[0]['users'] = $uname;
    $aData[0]['email'] = $email;
    $aData[0]['pass']  = $pass1;

    $db->dbInsert('vartotojai', $aData);

    Echo "<a href='../index.php'>Atgal</a><br>";

}else{
    die("sorry, your passwords dont match. <br />");
}


}else{

 $form = '
<form action="register.php" method="POST">
Username: <input type="text" name="uname" /><br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="pass1" /><br />
Confirm password: <input type="password" name="pass2" /><br />
 <input type="submit" value="Registruotis" name="submit" />
 </form>';


echo $form;


}

Echo "<a href='../index.php'>Atgal</a><br>";


?>

3 个答案:

答案 0 :(得分:0)

执行此操作的最佳和最快方法是在数据库模式UNIQUE中定义约束,如您已经提到的那样。

另一种方法是简单地选择数据库中的任何记录,使用您想要的任何字段&#39; unique&#39;如果它返回任何记录,它显然不是唯一的,你的脚本应该失败,否则,继续你正在做的任何事情。

SQL查询可能如下所示:

SELECT COUNT(id) FROM sakila.actor WHERE [parameter] LIKE '[WHAT YOU'RE TESTING]';

如果此查询返回0,那么你很高兴,如果它返回1,那么只有一个人已经参与该参数,如果它返回大于1,你已经拥有重复值。

答案 1 :(得分:0)

您只需要查看表中是否已有使用相同用户名的记录。

使用如下查询:

SELECT [row] FROM [table] WHERE users=[username];

...用相应的值替换[row],[table],[username]。 执行SELECT查询的方式取决于您使用$ db

的库

然后,您需要检查结果集中是否返回了任何记录。

if (!isset($resultSet)) { //therefore username is unique
    //insert user to database 
} else {
    //prompt 'user already exists'
}

编辑:PDO示例

$db = new Db();
$db->bind("uname",$uname);
$query = $db->query("SELECT uname FROM [table] WHERE users = :uname");
if (!isset($query[0]['users'])) { //therefore username is unique
    //insert user to database 
} else {
    //prompt 'user already exists'
}

答案 2 :(得分:0)

首先使用唯一的auto_increment创建一个像id这样的字段名称并检查以下代码

从tbname中选择*,其中uname =&#39; name&#39;和密码=&#34;密码&#34;

如果此查询返回null数组,则这不是有效用户,否则它可能具有数组值,它是您网站的用户,此过程对于将新用户插入数据库也是相同的