偶把$id提出来是为了以后。在想改变一种新的id的算法时只要修改
classid就可以了

解决方案 »

  1.   

    错了。。
    <?php$id = new id();
    echo $id->idInc();
    //echo  $id->idInc();$sql = "insert into (sys_id,name,pword)values('".id ."','name','pword')";
    ?>
    谁能给个id的算法。偶写这个在循环插入数据时,错了
      

  2.   

    //唉没有人啊!自己来吧
    <?php
    class id{
    var $id;
    function idInc(){
    if (empty($this->id)) {
    $this->id = time();
    }else{
    $this->id ++;
    }
    return $this->id; 
    }
    }
    ?>
    <?php$id = new id();
    echo $id->idInc()."<br>";
    echo $id->idInc()."<br>";
    //echo  $id->idInc()."<br>";?>
      

  3.   

    $sql = "insert into (sys_id,name,pword)values('".id ."','name','pword')";应该是这样吧:$sql = "insert into (sys_id,name,pword)values('".$id->idInc ."','name','pword')";
    ID依赖于time()?太不安全了吧,如果同一时刻有两条记录同时插入怎么办?
      

  4.   

    赫赫!终于有人了。
    to: screend(流浪小子) 
    偶也知道。可还是没有办法。
    最后写的那个也是有问题的 :(
    (没有考虑到多个点同时间提交)
      

  5.   

    to:回复人: xuzuning(唠叨) 
    还是不行啊。我用3台机器同时刷新。下面代码还是有重复
    <?php$id = new id();
    for ($i=0;$i<10;$i++){
    echo  $id->idInc()."<br>";
    }
    ?>
      

  6.   

    CREATE TABLE `sys` (
      `sys_id` int(11) NOT NULL auto_increment,
      PRIMARY KEY  (`sys_id`),
      UNIQUE KEY `Dgp_id` (`sys_id`)
    )
    偶一直用这样的定义来确定唯一的关键字。
    也用id作为表与表之间的关联信息。唠叨老大指出这是一个错误的方法。
    ------------------
    什么意思?
      

  7.   

    偶一直用这样的定义来确定唯一的关键字。
    也用id作为表与表之间的关联信息。
    ///
    用自增长的id 并且把他作为,表与表之间的关联字段是不对的
      

  8.   

    我想这就是通常说的主键与外键吧,如果表关系不是很复杂,而且没有一对多的关系,是可以的啊.
    ...
    可惜MySQL没有触发器..
      

  9.   

    用自增长的id ,并且把他作为表与表之间的关联字段.在数据库备份,恢复时会出错的.
    ggjj 谁有好的id 的算法???
      

  10.   

    “用自增长的id ,并且把他作为表与表之间的关联字段.”
    这并没有错,只是在部分情况下会出现约束异常的情况~~~而且作为企业级数据库,用自增长ID作为键能够提高数据库的执行效率~~~我们没必要因为可能出现的条件约束而导致的错误,就放弃条件约束。不过我承认,在这点上我一直与唠叨存在着比较大的分歧。呵呵,大概是看问题的观点不同而已~~~
      

  11.   

    实际也没有什么分歧把!我在改数据库时,也用了自增长的id ,
    只是还添加了一个id 作为表与表之间的关联字段
    //eg:表sys添加sys_id
    CREATE TABLE `sys` (
      `id` int(11) NOT NULL auto_increment,//查询,分页,更新数据(唯一标志)--老数据库中
      `sys_id` varchar(40) default NULL,//表对表的关联
      PRIMARY KEY  (`id`),
      UNIQUE KEY `id` (`id`),
      UNIQUE KEY `sys_id` (`sys_id`)
    )
      

  12.   

    “用自增长的id ,并且把他作为表与表之间的关联字段.在数据库备份,恢复时会出错的”
    这个其实我一直并不理解,因为在数据库的备份与恢复的时候自增长ID并不会发生错误。因为备份,不论是采用完全备份还是差异备份,自增长ID都是连续的,不重复的。而恢复的目的就是修复出错的数据,ID也是连续的不可能出现重复的情况。可能会出现错误的情况多数是发生在多个库数据合并的问题上,这个值得讨论。因为部分情况,放弃自增长可能有利。而部分情况,从新对记录整理编号可能更加合适。合理的使用约束条件,可以降低整理记录编号工作的难度。
      

  13.   

    呵呵,我们公司有个专门的组叫MT(migration tool),数据库是Oracle,
    数据库中有个主表,叫mtgconference,主键是confid,它是一个Sequence,
    在恢复的时候,我们会略去主表的confid,同时更新相应表的Confid也没什么问题.
    BTW,我们公司一个WebDB有300多张表,opdb接近400张表,也没有任何问题.
    至于效率嘛,公司的DB server都很强,用了多线程后,30分钟类就能搞定