<?
require_once("session.php");
$web_root_part = "../";
require_once($web_root_part."lib/db.php");
require_once($web_root_part."lib/function.php");
header('Content-type:text/html;charset=utf-8');   $AdminID = trim($_POST['AdminID']);
$PassWord = trim($_POST['PassWord']);
$Addtime = date("Y-m-d H:i:s");$querySel = "select * from Admin where AdminID='".$AdminID."'";
if( !($result = $db->sql_query($querySel)) )
{
message_die(DB_MESSAGE, 'Could not query Admin');

}else{

$row = $db->sql_fetchrow($result);
//$db->sql_freeresult($result);

if (empty($row['ID'])){

$sql="insert into Admin (AdminID,PassWord,Editer,Addtime) values('".$AdminID."','".md5($PassWord)."','".$_SESSION['AdminID']."','".$Addtime."')";
if( !($result = $db->sql_query($sql)) )
{
//echo $sql;
message_die(DB_MESSAGE, 'Could not query Admin');

}else{

  echo "<script>location.replace('admin.php');</script>";
}

}else{

echo "<Script Language='Javascript'>";
echo "alert('提示:管理员ID已存在,请重新输入!');";
echo "history.go(-1);";
echo "</Script>"; 
}
}
?>这个代码那里有问题呢? 怎么不管理员ID 有没有重复 都提示  管理员ID已存在,请重新输入 呢

解决方案 »

  1.   

    把这段$row = $db->sql_fetchrow($result);    
        //$db->sql_freeresult($result);
            
        if (empty($row['ID'])){
            
            $sql="insert into Admin (AdminID,PassWord,Editer,Addtime) values('".$AdminID."','".md5($PassWord)."','".$_SESSION['AdminID']."','".$Addtime."')";
            if( !($result = $db->sql_query($sql)) )
            {
                //echo $sql;
                message_die(DB_MESSAGE, 'Could not query Admin');
                    
            }else{
                        
              echo "<script>location.replace('admin.php');</script>";    
            }    换成echo "123"; 就没问题
      

  2.   

    有时候可有  有时候不行 感觉是 上一次 $row['ID'] 没被清除  
      

  3.   

    代码看不出哪儿有问题,你的测试是否准确?
    至于你说的$row['ID']没被清除,应该说不可能
      

  4.   

    判断数据库中 是否已经存在用户名 如果存在就提示 如果不存在就写入现在问题是数据库中如果存在 就提示 是没问题的如果数据库中不存在 就写入输入 然后也提示  管理员ID已存在,请重新输入这说明 if 执行了 else 也执行了 这两个能同时执行?
      

  5.   

    把以下代码换成print_r($row);做调试,如果还有问题,把调试出来的结果发上来echo "<Script Language='Javascript'>";
            echo "alert('提示:管理员ID已存在,请重新输入!');";
            echo "history.go(-1);";
            echo "</Script>";
      

  6.   


    显示 Array ( [ID] => 29 [AdminID] => 999999 [PassWord] => 96e79218965eb72c92a549dd5a330112 [IP] => [LoginTime] => [Editer] => admin [Addtime] => 2012-02-07 09:52:45 ) 数据库中没有 999999 这个用户名  应该是直接插入数据 返回 不应该执行print_r($row);
      

  7.   

    问题就应该出在 $querySel="insert into Admin (AdminID,PassWord,Editer,Addtime) values('".$AdminID."','".md5($PassWord)."','".$_SESSION['AdminID']."','".$Addtime."')";
    if(!($result = $db->sql_query($querySel)))
    {
    //echo $sql;
    message_die(DB_MESSAGE, 'Could not query Admin');

    }里边 我把这个代码换成 echo "123";就判断正确
      

  8.   

    请问你们是 怎么判断 用户注册用户名的问题的?就用这种最简单的 php 写的 不是用mvc写的
      

  9.   

    你是不是查错了表名了?既然你没有这条记录,又怎么会搜出来了呢?print_r有数据,那返回的记录数一定是>=1,所以问题并不在于怎么去判断。