文档章节

SQL编写规范(多select、update、insert、delete)[PHP]

小浩浩2015
 小浩浩2015
发布于 2015/11/18 18:20
字数 314
阅读 82
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

切勿在循环中,如(while、foreach、for) 出现(select、update、insert、delete)语句,e.g. :
1).批量更新数据update
      错误:
              if(!empty($data)){
                   foreach($dataas $k=>$val){
                       $query=" UPDATE ".TBL_CONFIG."SET config_value='$val'WHERE config_name='$k'";
                      DB()->ADM->execute($query);
                }
            }
     正确:
            if(!empty($data)){
                 $ids= '';
                 $query= "UPDATE ".TBL_CONFIG." SET config_value = CASE config_name";
                 foreach($data as $k => $val) {
                     if($ids!=''){$ids.=",";}$ids.="'$k'";
                     $query .= sprintf("WHEN '%s' THEN '%s'", $k, $val);
              }
              $query.= "END WHERE config_name IN ($ids)";
              DB()->ADM->execute($query);
        }
2).批理插入数据insert
    错误:
           if(!empty($data)){
                    foreach($data as $k=>$val){
                 $query=" INSERTINTO ".TBL_CONFIG."(config_value,config_name)VALUES('$val','$k')";
                 DB()->ADM->execute($query);
             }
         } 
     正确:
            if(!empty($data)){
                $query=" INSERT INTO ".TBL_CONFIG." (config_value,config_name)VALUES";
                $val_arr=array();
                foreach($data as $k=>$val){
                      $val_arr[]= " ('$val','$k')";
                }
               if(!empty($val_arr)){
                    $query.= implode(',', $val_arr);
                    DB()->ADM->execute($query);
                  }
                } 
3).批量查询select
       错误:
             if(!empty($data)){
                      foreach($data as $k=>$val){
                          $query="SELECTconfig_valueFROM ".TBL_CONFIG." WHERE config_name='$k'";
                          $res=DB()->ADM->execute($query);
                          $out= DB()->ADM->arrays($res);
                          $data[$k][‘config_value’]= $out['config_value'];
                    }
                   print_r($data);
                } 
     正确:
            if(!empty($data)){
                    $keys= array_keys($data);$keys=implode(",", $keys);
                    $query="SELECT config_name,config_valueFROM ".TBL_CONFIG." WHERE config_name IN($keys)";
                    $res=DB()->ADM->execute($query);
                    while($out=DB()->ADM->arrays($res)){
                          $data[$out [‘config_name’]][‘config_value’]=$out[‘config_value’];
                    }
                   print_r($data);
               } 
4).批理删除delete
     错误:
            if(!empty($data)){
                      foreach($data as $k=>$val){
                        $query=" DELETE FROM".TBL_CONFIG." WHERE config_name='$k'";
                        $res=DB()->ADM->execute($query);
                   }
                  print_r($data);
                 } 
      正确:
           if(!empty($data)){
                     $keys=array_keys($data);$keys=implode(",", $keys);
                     $query="DELETE FROM ".TBL_CONFIG."WHERE config_name IN($keys)";
                     $res=DB()->ADM->execute($query);
                     print_r($data);
             }


小浩浩2015
粉丝 2
博文 44
码字总数 34039
作品 0
深圳
私信 提问
加载中
请先登录后再评论。
SQLServer实现split分割字符串到列

网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题。 先贴上某大牛写的s...

cwalet
2014/05/21
9.6K
0
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
极速博客引擎--Gor

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/01/20
3.8K
0
opm-server-mirror

代码更新 2009-11-25: 加入反爬虫功能。直接Web访问服务器将跳转到Google。 使用方法 下载index.zip 解压index.zip得到index.php 将index.php传到支持php和cURL的国外服务器上 打开 http:/...

luosheng86
2013/01/29
1K
0
数据库代码辅助工具--MaoCaiJun.Database

MaoCaiJun.DataBase 是一个用于 Microsoft Visual Studio 的数据库代码生成组件。它是基于 xml 文件的代码创建工具,支持sql2000,sql2005,sql2008,access, SQLite MaoCaiJun.Database 数据库...

mccj
2013/02/06
2.3K
1

没有更多内容

加载失败,请刷新页面

加载更多

OpenCV开发笔记(六十九):红胖子8分钟带你使用传统方法识别已知物体(图文并茂+浅显易懂+程序源码)

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:h...

红模仿_红胖子
20分钟前
5
0
Dubbo

泛化调用 在提供端,比起常规的dubbo调用,泛化调用会多经过一个 GenericFilter,即判断是泛化方法才会经过该Filter进行处理。主要以下几个处理步骤: 1.首先根据方法签名,通过Java反射获取...

KafkaPlus
20分钟前
0
0
ThingJS 3D开发新体验,iframe元素提升网页加载性能

谷歌浏览器率先支持iframe元素,延迟加载有助于减少内存使用量、提升页面其它部分的加载速度并保存数据。ThingJS 3D开发有了新的体验。 在使用ThingJS制作物联网可视化项目时,需要使用Thing...

森友鹿锘
33分钟前
0
0
什么是TypeScript?为什么我要用它代替JavaScript? [关闭]

问题: Closed . 已关闭 。 This question needs to be more focused . 这个问题需要更加集中 。 It is not currently accepting answers. 它当前不接受答案。 Want to improve this questio......

法国红酒甜
43分钟前
27
0
键盘输入限制

// 用户输入的时候替换:nativeOnInput 替换负数setInputValue(e, row, prop) { if(e.target.value.includes('-')) { e.target.value = '-'+e.target.value.replace(/-/g, ......

赤月三号
46分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部