多用户同时访问数据库,此时如何根据各自的ID获得各自的用户名(很急)!
有两个用户,甲用户以ID(比如说aa)登录数据库,他在修改一个表以后,需要往这张表中添加自己的名字(可以通过ID查询);此时甲不退出,另一个用户乙以ID(比如说bb)登录数据库,他也修改其中的一个表(不一定和甲是同一张表),并往这张表中添加自己的名字(也可以通过bb查询到),这样以后,用户甲如果再一次操作数据库中的表,再往其中插入自己的名字(通过ID aa来查询用户甲的名字),此时发现表示用户ID的变量已经是空的,这个问题如何解决?很急呀 问题点数:0、回复次数:8Top
1 楼hcfyxy(无名)回复于 2003-11-03 18:04:42 得分 0
你说的是什么啊?
插入自己的名字(通过ID aa来查询用户甲的名字)???究竟是插入 insert 还是查询select ???
存入数据库的内容怎么会没有了呢?你说的是数据库记录还是程序变量啊?
如果是多用户操作数据库/表,可以在操作之前lock,操作之后unlock,这样可以保证用户不会同时修改一个记录的错误。Top
2 楼flyingpal(flyingpal)回复于 2003-11-03 18:41:12 得分 0
说的简单点,就是用户在登录前经过数据库中的用户信息表的相关信息进行验证,如$sql = "SELECT * FROM user WHERE (用户名='$oper_id' AND 密码='$oper_pwd')";如果通过就进入。问题就是两个用户先后登录,都通过验证,可先登录的用户甲如果想显示自己的ID,如echo $oper_id;发现这个变量是空的,而后登录的用户乙则可以正确显示ID。如果此时先登录的用户甲重新登录,则可以正确显示ID,而用户乙的ID又失效拉。请问如何解决?谢谢!很急Top
3 楼pingzi3000(书生耍大刀)回复于 2003-11-03 18:46:12 得分 0
呵呵,这里需要session来管理了,每个用户登陆进系统之后,都会有一个独一无二的sessionID值,换言之,用户甲登陆之后产生的ID是与用户乙登陆之后产生的ID不同的,估计你是在本机测试的一个窗口中打开这个页面的,你在甲登陆之后, 不要CTRL+N这样新建窗口,而是应该另外开启一个IE窗口来测试!如此一来,OK搞定Top
4 楼blueoxygen(有你在身旁 心更坚强)回复于 2003-11-03 19:05:45 得分 0
你的验证sql语句有安全问题
另外还是弄来你的代码吧。你说的情况实在无法想明白,如果不看代码Top
5 楼ydyd(一点一滴)回复于 2003-11-03 22:35:43 得分 0
不确定你要什么功能Top
6 楼chmask(努力学java……)回复于 2003-11-04 08:21:41 得分 0
呵呵,如果你是在同一台机子上测试的我保证你出这个问题……如果不是同一台机子的话……我想除非你的程序有错,否则不会出这个问题的。
在同一台机子上,你所有的变更都在你的浏览器里存储,当你一用另一个用户登录,你的id就会自动的更新成你新登录的id这样的话,你肯定就丢掉了你原本的id了……
在两台不同的机器上是不会有这个问题的。
如果你非要在一台机器上的话……那就换个办法来实现了,比如用一个数组变量来操作用户,每个用户给一个登录号,对应的用户id在相应的数组下标为用户号的数组字段里。这样就可以了……Top
7 楼flyingpal(flyingpal)回复于 2003-11-06 11:26:31 得分 0
我重新打开一个IE窗口还是不行,通过其它机器登录也还是不行。各位大侠帮忙呀,先谢谢拉!Top
8 楼xuzuning(唠叨)回复于 2003-11-06 17:43:15 得分 0
你没有保存或传递$oper_idTop




