如何使用php避免我的数据库中的重复用户

时间:2010-12-20 14:19:22

标签: php mysqli

你们好,

希望每个人都可以,

现在我有一个管理员可以创建用户的表单,他可以删除用户,因为我会先显示代码

这是我的代码

> > <?php error_reporting(E_ALL);
> 
> session_start();
>   if(!isset($_SESSION['login']) ||
> $_SESSION['login']!='1' )         {
>       header("Location:loginpage.php");
>       } ?>
> 
> <!DOCTYPE html PUBLIC "-//W3C//DTD
> XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html
> xmlns="http://www.w3.org/1999/xhtml">
> <head> <meta http-equiv="Content-Type"
> content="text/html; charset=utf-8" />
> <title>My Control panel</title> <link
> href="../css_style.css"
> rel="stylesheet" type="text/css" />
> </head>
> 
> 
> 
> <body> <div id="werpper"> <div
> id="content">
> 
> <div id="header">My control -
> Panel</div> <div id="body_cntent">  
> <div id="left_side">   <p>Home and
> instructions</p>   <p><a
> href="../control_panel.php">main
> directory</a></p>   <p><a
> href="add_event.php">Add new
> event</a></p>   <p><a
> href="../editoccasion.php">Control
> Occasion's</a></p>   <p><a
> href="add_photos_and_occasion.php">Add
> Photos_occasion</a></p>   <p><a
> href="../signout.php">Sign out</a></p>
> </div> <div id="right_side">
> 
> <h2>Add new user</h2>
> 
> <form action="" method="post">
> 
> <table width="600" border="0"
> cellpadding="5" cellspacing="0">  
> <tr>
>     <td width="78">User name</td>
>     <td width="2">&nbsp;</td>
>     <td width="149"><input type="text" name="uname" value="" /></td>
>     <td width="332" rowspan="5" align="left" valign="top"><p
> class="red">For Administration use
> only.</p>
>       <p>You can add or delete users from <a
> href="edit_users.php">here</a><br />
>         You can't edit any user if you like to change any user account you
> can delete the user and create it
> again with the new
> information.</p></td>   </tr>   <tr>
>     <td>Password</td>
>     <td>&nbsp;</td>
>     <td><input type="text" name="pass" value="" /></td>
>     </tr>   <tr>
>     <td>&nbsp;</td>
>     <td>&nbsp;</td>
>     <td><input type="submit" name="submit" value="Add user" /></td>
>     </tr>   <tr>
>     <td>&nbsp;</td>
>     <td>&nbsp;</td>
>     <td>&nbsp;</td>
>     </tr>   <tr>
>     <td>&nbsp;</td>
>     <td>&nbsp;</td>
>     <td align="right">&nbsp;</td>
>     </tr> </table> </form>
> 
> </div> </div>
> 
> <div id="footer"></div> </div> </div>
> 
> <?php
>       if (isset($_POST['submit'])) {
>               include_once "../config/config.php";
>               $uname = $_POST['uname'];       $pass =$_POST['pass'];
>               $check = "select * from users where id = {$uname}";         $result_check
> = $db->query($check)or die($db->error);
>       
>               while ($row = $result_check -> fetch_object()) {
>                       if(num_rows == 1){
>               
>               echo "error";
>               
>               }else{
>               $add_user = "insert into users (id, uname, pass) values ('',
> '$uname', '$pass')";
>               $result = $db -> query($add_user) or die ("$db->error");
>               if ($result) {
>                       echo "user added successfuly";
>                       }else{
>               
>               echo "There was an error please try again later";
>               
>               }           }       }   } ?>
> 
> </body> </html>

我需要知道的是如何解决此代码的问题

$check = "select * from users where id = {$uname}";
        $result_check = $db->query($check)or die($db->error);


        while ($row = $result_check -> fetch_object()) {

            if(num_rows == 1){

                echo "error";

                }

如何避免我的数据库中的重复用户

4 个答案:

答案 0 :(得分:2)

好的,我发现我的堆栈溢出答案我喜欢这个网站和那里的所有人

这是答案

$check = $db->query("SELECT 1 FROM users WHERE uname='$uname'");
            if (mysqli_num_rows($check) > 0) {
                die('username already taken');  

它非常简单,并且它使用了count()的相同概念,如果有人知道有关计数的信息,请写给我们

谢谢大家,并且, Yousef Altaf

答案 1 :(得分:1)

大多数数据库都有一些制作列或独特组合的方法。只需在要使其唯一的列上设置唯一约束即可。

如果其中的用户已经不是唯一的,则必须先将其清除出数据库。

答案 2 :(得分:0)

为了防止数据库中的重复用户,只需执行类似于INSERT检查之前列出的选择,以查看用户是否存在。然而,另一种方法是,更糟糕的方法是在数据库中的字段上添加UNIQUE约束,然后在复制时INSERT将失败。

答案 3 :(得分:0)

我不确定你正在使用哪个数据库以及它的所有方法是什么,所以我使用普通的mySQL来实现这个目标,如果你选择uname(用户名)字段为{{{ 1}} -

UNIQUE INDEX