批量修改php
1. 求一个批处理, 批量修改php文件固定行里的内容,内容不同
UltraEdit,我完成过同样的任务,几百个htm文件里批量改内容,秒杀。
好的工具能让你事半功倍。具体怎么用,自己网络,提醒,可以用正则表达式。
2. 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'));
3. php 批量修改时如何得到各自ID
这个应该没什么办法,一般放到缓存里的都是 特定字符+ID,如果你用循环先查出你要修改的东西的ID也可以,但在大数据量表里,效率太低,而且容易MYSQL假死。除非你自己为了这方面将特定的数据放到缓存里 。 例如你要修改 name 这个字段的东西 ,你将数据库name 的值都放到缓存里,完事读取出来获得ID。
4. php如何批量修改某个文件夹下所有文件名的方法
方法如下:我重命名的规则是把所有有空格的全部替换成“_”,然后再后面加一个"_s"。
<?php
$paths = "C://Documents and Settings//sk//Desktop//s//";
$d = dir($paths);
while (false !== ($entry = $d->read())) {
$table_change = array(' '=>'_');
$newName = strtr($entry,$table_change);
$newName = substr($newName, 0,-4);
rename($paths.$entry, $paths.$newName."_s.jpg");
}
$d->close();
echo "done";
?>
以上就是php如何批量修改某个文件夹下所有文件名的方法
5. PHP脚本批量修改文件名
$dir = "files/";
$filearray = scandir($dir);
function changename($str){
return "rr".$str;
}
for($i=3;$i>=2;$i--){
echo $dir.$filearray[$i]."<br>";
rename($dir.$filearray[$i],$dir.changename($filearray[$i]));
}
6. 用php批量修改并替换文件名如何实现
import java .util.*; public class test { public static void main (String[]args){
double sum;//声明要储存的变量应发的奖金
Scanner input =new Scanner (System.in);//导入扫描器
System.out.print ("输入当月利润");
double lirun=input .nextDouble();//从控制台录入利润
if(lirun<=100000){
7. phpcms如何批量修改文章内容
我曾经批量替换过关键词的部分字段,方法如下:
在phpmaadmin中执行下行代码:
updatev9_newssetkeywords=replace(keywords,',','')//replace(字段名,'原来的电话','更新后的电话')
你可以参考下,根据你的问题找到存放内容的那个表,然后批量的把电话更新下。
更新完了之后对phpcms的全站更新一次。
你试下可以不?祝你成功
8. 怎么快速修改php排版
点击排版按钮后,将会弹出一个新的页面,什么?没有?好吧,我知道你的浏览器是最棒的,屏蔽了所有的弹出窗口,点击浏览器选项,关闭屏蔽弹出窗口的选项吧,现在再次点击排版,新页面终于出来了,而我们的首页上方会多出一条切换排版模式的选项。
9. 如何用dreamweaver将我的网页文件批量修改成.php的后缀
我劝你别改了,改了就无法运行了,你只能重新编写代码了。.asp网页与.php网页是不一样的,需要不同的服务器软件支持,其代码语法格式也是不一样的,不是简单改一下扩展名的事,你可要慎重啊!
10. Thinkphp怎么批量更新数据
thinkphp批量更新数据可以参考如下三种方法:
方法一:
//批量修改 data二维数组 field关键字段 参考ci 批量修改函数 传参方式
function batch_update($table_name='',$data=array(),$field=''){
if(!$table_name||!$data||!$field){
return false;
}else{
$sql='UPDATE '.$table_name;
}
$con=array();
$con_sql=array();
$fields=array();
foreach ($data as $key => $value) {
$x=0;
foreach ($value as $k => $v) {
if($k!=$field&&!$con[$x]&&$x==0){
$con[$x]=" set {$k} = (CASE {$field} ";
}elseif($k!=$field&&!$con[$x]&&$x>0){
$con[$x]=" {$k} = (CASE {$field} ";
}
if($k!=$field){
$temp=$value[$field];
$con_sql[$x].= " WHEN '{$temp}' THEN '{$v}' ";
$x++;
}
}
$temp=$value[$field];
if(!in_array($temp,$fields)){
$fields[]=$temp;
}
}
$num=count($con)-1;
foreach ($con as $key => $value) {
foreach ($con_sql as $k => $v) {
if($k==$key&&$key<$num){
$sql.=$value.$v.' end),';
}elseif($k==$key&&$key==$num){
$sql.=$value.$v.' end)';
}
}
}
$str=implode(',',$fields);
$sql.=" where {$field} in({$str})";
$res=M($table_name)->execute($sql);
return $res;
}
//测试
function test(){
$update_array=array();
for ($i=2; $i <7 ; $i++) {
$data=array();
$data['id']=$i;
$data['memeber_type']=2;
$data['memeber_type_state']=1;
$update_array[]=$data;
}
$res=$this->batch_update('yl_member',$update_array,id);
var_mp($res);
}
方法二:
即是循环一条一条的更新记录。一条记录update一次,这样性能很差,也很容易造成阻塞。
那么能不能一条sql语句实现批量更新呢?mysql并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)
这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。
即是将条件语句写在了一起。
这里的where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。
如果更新多个值的话,只需要稍加修改:
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
实际运用
$display_order = array(
1 => 4,
2 => 1,
3 => 2,
4 => 3,
5 => 9,
6 => 5,
7 => 8,
8 => 9
);
$ids = implode(',', array_keys($display_order));
$sql = "UPDATE categories SET display_order = CASE id ";
foreach ($display_order as $id => $ordinal) {
$sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal);
}
$sql .= "END WHERE id IN ($ids)";
echo $sql;
方法二不建议使用。
方法三:
/*
* @param $saveWhere :想要更新主键ID数组
* @param $saveData :想要更新的ID数组所对应的数据
* @param $tableName : 想要更新的表明
* @param $saveWhere : 返回更新成功后的主键ID数组
* */
public function saveAll($saveWhere,&$saveData,$tableName){
if($saveWhere==null||$tableName==null)
return false;
//获取更新的主键id名称
$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)>0&count($error)<$len){
//先将原先的预处理进行回滚
$model->rollback();
for($i=0;$i<count($error);$i++){
//删除更新失败的ID和Data
unset($saveWhere[$key][$error[$i]]);
unset($saveData[$error[$i]]);
}
//重新将数组下标进行排序
$saveWhere[$key]=array_merge($saveWhere[$key]);
$saveData=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>";
mp($f);
echo 'ok';
}else{
//更新失败操作
echo "This is failed :</br>";
mp($f);
echo 'error';
}
}