怎么设定数据库的关键字的? 偶把$id提出来是为了以后。在想改变一种新的id的算法时只要修改classid就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 错了。。<?php$id = new id();echo $id->idInc();//echo $id->idInc();$sql = "insert into (sys_id,name,pword)values('".id ."','name','pword')";?>谁能给个id的算法。偶写这个在循环插入数据时,错了 //唉没有人啊!自己来吧<?phpclass 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>";?> $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()?太不安全了吧,如果同一时刻有两条记录同时插入怎么办? 赫赫!终于有人了。to: screend(流浪小子) 偶也知道。可还是没有办法。最后写的那个也是有问题的 :((没有考虑到多个点同时间提交) to:回复人: xuzuning(唠叨) 还是不行啊。我用3台机器同时刷新。下面代码还是有重复<?php$id = new id();for ($i=0;$i<10;$i++){ echo $id->idInc()."<br>";}?> CREATE TABLE `sys` ( `sys_id` int(11) NOT NULL auto_increment, PRIMARY KEY (`sys_id`), UNIQUE KEY `Dgp_id` (`sys_id`))偶一直用这样的定义来确定唯一的关键字。也用id作为表与表之间的关联信息。唠叨老大指出这是一个错误的方法。------------------什么意思? 偶一直用这样的定义来确定唯一的关键字。也用id作为表与表之间的关联信息。///用自增长的id 并且把他作为,表与表之间的关联字段是不对的 我想这就是通常说的主键与外键吧,如果表关系不是很复杂,而且没有一对多的关系,是可以的啊....可惜MySQL没有触发器.. 用自增长的id ,并且把他作为表与表之间的关联字段.在数据库备份,恢复时会出错的.ggjj 谁有好的id 的算法??? “用自增长的id ,并且把他作为表与表之间的关联字段.”这并没有错,只是在部分情况下会出现约束异常的情况~~~而且作为企业级数据库,用自增长ID作为键能够提高数据库的执行效率~~~我们没必要因为可能出现的条件约束而导致的错误,就放弃条件约束。不过我承认,在这点上我一直与唠叨存在着比较大的分歧。呵呵,大概是看问题的观点不同而已~~~ 实际也没有什么分歧把!我在改数据库时,也用了自增长的id ,只是还添加了一个id 作为表与表之间的关联字段//eg:表sys添加sys_idCREATE 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`)) “用自增长的id ,并且把他作为表与表之间的关联字段.在数据库备份,恢复时会出错的”这个其实我一直并不理解,因为在数据库的备份与恢复的时候自增长ID并不会发生错误。因为备份,不论是采用完全备份还是差异备份,自增长ID都是连续的,不重复的。而恢复的目的就是修复出错的数据,ID也是连续的不可能出现重复的情况。可能会出现错误的情况多数是发生在多个库数据合并的问题上,这个值得讨论。因为部分情况,放弃自增长可能有利。而部分情况,从新对记录整理编号可能更加合适。合理的使用约束条件,可以降低整理记录编号工作的难度。 呵呵,我们公司有个专门的组叫MT(migration tool),数据库是Oracle,数据库中有个主表,叫mtgconference,主键是confid,它是一个Sequence,在恢复的时候,我们会略去主表的confid,同时更新相应表的Confid也没什么问题.BTW,我们公司一个WebDB有300多张表,opdb接近400张表,也没有任何问题.至于效率嘛,公司的DB server都很强,用了多线程后,30分钟类就能搞定 桌面软件和网站数据对接,用什么开发比较好? 右击查看源码出现乱码 IIS+PHP(5.1.2) 配置问题 高人好心人来帮我解决个问题吧 帮忙写一个正则,替换超连接。谢谢! 请大家帮忙有关于时间戳转换的的问题? 我下了一个php的集成的安装包,装了之后怎么还是不能运行,请多指教 穷疯了,便宜出卖公司网站空间! 上传图片的问题,请帮忙解决,谢谢:) 一个PHP排序的问题,非常恼人,基本很少人能想出来,如能给出php算法,给足100分,先谢了 在线等--PHP从数据库中取出时间字段,要显示出毫秒,如何做,请高手帮忙 require_once在php4和php5里不一样????
<?php$id = new id();
echo $id->idInc();
//echo $id->idInc();$sql = "insert into (sys_id,name,pword)values('".id ."','name','pword')";
?>
谁能给个id的算法。偶写这个在循环插入数据时,错了
<?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>";?>
ID依赖于time()?太不安全了吧,如果同一时刻有两条记录同时插入怎么办?
to: screend(流浪小子)
偶也知道。可还是没有办法。
最后写的那个也是有问题的 :(
(没有考虑到多个点同时间提交)
还是不行啊。我用3台机器同时刷新。下面代码还是有重复
<?php$id = new id();
for ($i=0;$i<10;$i++){
echo $id->idInc()."<br>";
}
?>
`sys_id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`sys_id`),
UNIQUE KEY `Dgp_id` (`sys_id`)
)
偶一直用这样的定义来确定唯一的关键字。
也用id作为表与表之间的关联信息。唠叨老大指出这是一个错误的方法。
------------------
什么意思?
也用id作为表与表之间的关联信息。
///
用自增长的id 并且把他作为,表与表之间的关联字段是不对的
...
可惜MySQL没有触发器..
ggjj 谁有好的id 的算法???
这并没有错,只是在部分情况下会出现约束异常的情况~~~而且作为企业级数据库,用自增长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`)
)
这个其实我一直并不理解,因为在数据库的备份与恢复的时候自增长ID并不会发生错误。因为备份,不论是采用完全备份还是差异备份,自增长ID都是连续的,不重复的。而恢复的目的就是修复出错的数据,ID也是连续的不可能出现重复的情况。可能会出现错误的情况多数是发生在多个库数据合并的问题上,这个值得讨论。因为部分情况,放弃自增长可能有利。而部分情况,从新对记录整理编号可能更加合适。合理的使用约束条件,可以降低整理记录编号工作的难度。
数据库中有个主表,叫mtgconference,主键是confid,它是一个Sequence,
在恢复的时候,我们会略去主表的confid,同时更新相应表的Confid也没什么问题.
BTW,我们公司一个WebDB有300多张表,opdb接近400张表,也没有任何问题.
至于效率嘛,公司的DB server都很强,用了多线程后,30分钟类就能搞定