php数据更新的方法 php数据更新的方法是什么( 二 )


$key = array_keys($saveWhere)[0];
//获取更新列表的长度
$len = count($saveWhere[$key]);
$flag=true;
$model = isset($model)?$model:M($tableName);
//开启事务处理机制
$model-startTrans();
//记录更新失败ID
$error=[];
for($i=0;$i$len;$i++){
//预处理sql语句
$isRight=$model-where($key.'='.$saveWhere[$key][$i])-save($saveData[$i]);
if($isRight==0){
//将更新失败的记录下来
$error[]=$i;
$flag=false;
}
//$flag=$flag$isRight;
}
if($flag ){
//如果都成立就提交
$model-commit();
return $saveWhere;
}elseif(count($error)0count($error)$len){
//先将原先的预处理进行回滚
$model-rollback();
for($i=0;$icount($error);$i++){
//删除更新失败的ID和Data
unset($saveWhere[$key][$error[$i]]);
unset($saveData[$error[$i]]);
}
//重新将数组下标进行排序
$saveWhere[$key]=array_merge($saveWhere[$key]);
$saveData=https://www.04ip.com/post/array_merge($saveData);
//进行第二次递归更新
$this-saveAll($saveWhere,$saveData,$tableName);
return $saveWhere;
}
else{
//如果都更新就回滚
$model-rollback();
return false;
}
}
在测试方法中调用:
public function test(){
//要更新的数据表的主键数组
$where['ID']=array(70,73,74,80,83);
//ID主键数组对应的待更新数据
$save=array(
array('School'='DK Univisity01','isExport'=0),
array('School'='DK Univisity02','isExport'=0),
array('School'='DK Univisity03','isExport'=0),
array('School'='DK Univisity04','isExport'=0),
array('School'='','isExport'=0),
// array('School'=' Univisity05','isExport'=0),
);
$f=$this-saveAll($where,$save,'want');
if(count($f['ID'])0){
//返回更新成功的ID数组
echo "This is success :/br";
dump($f);
echo 'ok';
}else{
//更新失败操作
echo "This is failed :/br";
dump($f);
echo 'error';
}
}
thinkphp3.0 更新数据 怎么更新 我怎么save都不行 最好举个具体实例方式很多,例如
$data = https://www.04ip.com/post/$_POST;
$User = M('User');
$User-save($data);
或者
$User = M('User');
$User-create();
$User-save();
要具体方式具体分析,总得来说 , 流程就是接受浏览器POST来php数据更新的方法的数据,然后调用模型的save方法来更新 , 或者直接使用create方法来接受并初始化POST过来的数据 。但需要注意的是,数据库里需要已存在这条数据 。这些基本的方法php数据更新的方法你可以去参考开发手册 。
如果你是这么做的但仍然不行,那么你可以使用模型的getLastSql()方法来查看模型到底是执行了什么样的SQL语句,然后自己看看SQL语句是否有问题,以便排查自己的错误
请教一个问题 关于PHp 写入数据库是自动更新的 add方法问题说的不详细,说说本人的理解吧
同时在数据插入时允许更新操作:
add($data='',$options=array(),$replace=false)
其中add方法增加$replace参数(是否添加数据时允许覆盖),true表示覆盖,默认为false
PHP里面,想要更新数据,但是数据一开始不存在 。请问要怎么写才能达到更新的效果?这里常规的做法就是先用select判断数据是否存在,存在则update,不存在则insert
不过如果是mysql,那么还有replace的用法,他会自动判断是否有数据 , 有则更新,没有则插入,sql的写法跟insert很相似
replace into table_name (id, name) values (1, 'name')
两种方法有各自的优缺点 , 具体用那种还是需要结合实际情况来判断

推荐阅读