PHP多用户同时修改数据的简单介绍

php里如果二个人同时操一个数据库里表的字段,怎么避免首先PHP多用户同时修改数据,这个问题只有在特殊情况下才算是问题,大多数情况下可以不作考虑 。
然后 , 这是问题很难描述清楚,解决方案有多种,下面提供一种较方便易用的方式
场景(问题)描述如下:
0,用户A、B同时打开一个页面,页面显示,客户表T_CUSTOMER字段(C_NAME、C_AGE)
姓名:张三 , 年龄:25
1,A 将姓名“张三”改为“张三1”,然后保存
2 , B 将年龄“25”改为“30”,然后保存
这样A的操作就被覆盖PHP多用户同时修改数据了 , 姓名又变回“张三”了,大家一般怎么处处这种情况PHP多用户同时修改数据?
这里给出一个较易用的解决方案
给表添加一字段:LAST_UPDATE,即最后更新时间
回放场景
0,用户A、B同时打开一页面,面页显示:
姓名:张三,年龄:25,LAST_UPDATE:2008-10-17 13:45:00
1 , A 将姓名“张三”改为“张三1”,然后保存
重点在这里:更新数据时WHERE条件里多一条件:AND LAST_UPDATE = '2008-10-17 13:45:00'
更新成功,此时触发器会将当前时间“2008-10-17 13:46:00”赋值给LAST_UPDATE
2,B 将将年龄“25”改为“30”,然后保存
B更新数据时WHERE条件里也有这个条件:AND LAST_UPDATE = '2008-10-17 13:45:00' , 但此时LAST_UPDATE的值已经在A修改记录时变成2008-10-17 13:46:00
下面要做的就是给出提示了:喔哟 , 此信息在PHP多用户同时修改数据你发呆这段时间已被人改过啦,所以你需要返工 。
触发器代码如下:
===================================================
CREATE OR REPLACE TRIGGER T_CUSTOMER
BEFORE UPDATE ON T_CUSTOMER
FOR EACH ROW
/*
记录最后修改时间
*/
BEGIN
:NEW.LAST_UPDATE := SYSDATE;
END;
===================================================
如果触发器不熟悉或者只是不喜欢用触发器 , 完全可以修改记录时同时给LAST_UPDATE字段赋值,以此替代触发器的作用 。
php批量修改数据function updatecols($table,$arr){
$sql = "update ".$table." set ";
$total = count($arr);
$i=1;
foreach($arr as $k=$v){
$sql .=$k."=".$v;
if($i$total){
$sql .= ",";
}
$i++;
}
return $sql;
}
echo updatecols("table1",array('col1'='123','col2'='345'));
PHP中如何处理多用户同时进行文本的编辑?需要代码来解释有个FLOCK函数 $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) { // 进行排它型锁定 fwrite($fp, "Write something here\n"); flock($fp, LOCK_UN); // 释放锁定 } else { echo "Couldn't lock the file !"; } fclose($fp);
【PHP多用户同时修改数据的简单介绍】PHP多用户同时修改数据的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于、PHP多用户同时修改数据的信息别忘了在本站进行查找喔 。

    推荐阅读