十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以写一个状态字段,当有用户在编辑的时候加个状态,有状态的数据其它的用户不能编辑
创新互联建站是一家专业提供鹿寨企业网站建设,专注与成都做网站、网站制作、H5高端网站建设、小程序制作等业务。10年已为鹿寨众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
首先,这个问题只有在特殊情况下才算是问题,大多数情况下可以不作考虑。
然后,这是问题很难描述清楚,解决方案有多种,下面提供一种较方便易用的方式
场景(问题)描述如下:
0,用户A、B同时打开一个页面,页面显示,客户表T_CUSTOMER字段(C_NAME、C_AGE)
姓名:张三,年龄:25
1,A 将姓名“张三”改为“张三1”,然后保存
2,B 将年龄“25”改为“30”,然后保存
这样A的操作就被覆盖了,姓名又变回“张三”了,大家一般怎么处处这种情况?
这里给出一个较易用的解决方案
给表添加一字段: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
下面要做的就是给出提示了:喔哟,此信息在你发呆这段时间已被人改过啦,所以你需要返工。
触发器代码如下:
===================================================
CREATE OR REPLACE TRIGGER T_CUSTOMER
BEFORE UPDATE ON T_CUSTOMER
FOR EACH ROW
/*
记录最后修改时间
*/
BEGIN
:NEW.LAST_UPDATE := SYSDATE;
END;
===================================================
如果触发器不熟悉或者只是不喜欢用触发器,完全可以修改记录时同时给LAST_UPDATE字段赋值,以此替代触发器的作用。
PHP 防止表单重复提交,使用令牌来做验证,即可解决。示例如下:
index.php:
?php
header("Content-type:text/html;charset=utf-8");
//开启session
session_start();
//如果令牌为空,则生成一个令牌
if(!isset($_SESSION['token'] ) || $_SESSION['token'] == ""){
//给当前表单生成一个令牌
$_SESSION['token'] = md5(microtime(true));
}
?
form method="get" action="deal.php"
名称: input type="text" name="names"br/
描述: input type="text" name="desc"br/
input type="text" name="token" value="?=$_SESSION['token']?"
input type="submit" value="提交"
/form
deal.php:
?php
header("Content-type:text/html;charset=utf-8");
//开启session
session_start();
//验证令牌
if($_REQUEST['token'] === $_SESSION['token']){
//表单已经提交,重新生成令牌
$_SESSION['token'] = md5(microtime(true));
echo "表单提交成功:br/";
print_r($_REQUEST);
}else{
echo "重复提交";
}
?
执行两次查询语句就可以啊.
update table1 set 密码=新密码 where 条件
update table2 set 密码=新密码 where 条件
没必要完全同时修改吧,或者说,一般的需求用不到.
可以的,网络数据库的连接方式就把你原来的连接语句的本地地址改为ip地址就ok啦。
很简单,数据库配置文件改成一致的就行。
1:当然前提是调用的表和字段都是一样的,比如多个网站都是dedeCMS或者都是PHPcms。一个DEDECMS一个phpcms要同样的数据库是不行的(当然这两个安装的时候可以选择同一个数据库,因为表前缀不同他们可以共存一个数据库,但是dedecms后台发布的文章不会同步到phpcms上)。
2:可以共用一个数据库。两个系统同时修改同一条数据会存在一致性问题,也就是会冲突,需要用技术手段加以控制。缓存也是有问题的,由于你用的开发语言不同,恐怕也只有Memcache这种集中式的缓存可以使用。也可以从业务逻辑的设计上避免缓存的数据不一致性。总之可以这样用,但是要小心设计。
怎么感觉sql语法不对呢?
UPDATE 命令语法:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
上面的语句貌似应该是:
update table_name set time=1 where id=001