首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在MySql中重复。

问避免在MySql中重复。
EN

Stack Overflow用户
提问于 2015-05-30 07:29:08
回答 3查看 75关注 0票数 2

我想不出在我的php网站上拒绝相同用户帐户的方法,而且我也很难使用其他生成的代码。我尝试在phpmyadmin中使用unique,但是它在拒绝它之后给了我一个错误。下面是代码:

代码语言:javascript
复制
<?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>";


?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-30 08:04:36

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

使用如下查询:

代码语言:javascript
复制
SELECT [row] FROM [table] WHERE users=[username];

带有相应值的...replacing行、表、用户名。进行SELECT查询的方式将取决于您为$db使用的库

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

代码语言:javascript
复制
if (!isset($resultSet)) { //therefore username is unique
    //insert user to database 
} else {
    //prompt 'user already exists'
}

编辑: PDO示例

代码语言:javascript
复制
$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'
}
票数 0
EN

Stack Overflow用户

发布于 2015-05-30 07:47:45

要做到这一点,最好和最快的方法是在数据库模式唯一的范围内定义一个约束,正如您已经提到的尝试。

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

SQL查询可以如下所示:

代码语言:javascript
复制
SELECT COUNT(id) FROM sakila.actor WHERE [parameter] LIKE '[WHAT YOU'RE TESTING]';

如果这个查询返回0,那么很好,如果它返回1,那么就有一个人已经有了这个参数,如果它返回大于一个,那么您已经有了重复的值。

票数 0
EN

Stack Overflow用户

发布于 2015-05-30 08:28:12

首先,使用唯一的auto_increment创建一个类似id的字段名,并检查以下代码

从tbname选择* uname='name‘和password="password“

如果这个查询返回空数组--这不是一个有效的用户--否则它可能有数组值--它是您站点的用户,这个过程对于将新用户插入到db也是一样的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30543544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档