自动生成简单的sql语句
2012-08-04 18:24
281 查看
$sql .= "id='" . $arr['id'] . "'"; $sql .= "id='{$arr['id']}'"; $sql .= "id='$arr[id]'";
最近试了一下生成sql语句不同写法的速度,在上面三种中, 第三种最慢,但没慢多少(顶多20%)。
第一种比较麻烦,但方便写成 $sql .= "id='" . func( $arr['id'] ) . "'"; 。至于把在双引号中的变量用{}括起来,是一个好的php编程习惯。但不要犯下面的错误。
最慢的是这种写法 -- $sql .= "id='{$arr[id]}'"; 。慢几倍啊。
很多的 insert和update语句都是重复劳动 。所以最近写了两个函数,应该可以应付多数情况。如下。
function create_insert($arr_data, $arr_in_up) { $sql = '('; $sql2 = ''; foreach($arr_in_up as $k=>$v) { $sql .= $k . ','; $sql2 .= add_comma( $arr_data[$v] ); } return substr($sql, 0, -1) . ') values (' . substr($sql2, 0, -1) . ');'; } function create_update($arr_data, $arr_in_up) { $sql = ' '; foreach($arr_in_up as $k=>$v) { $sql .= $k . '=' . add_comma( $arr_data[$v] ); } return substr($sql, 0, -1) . ' '; } function add_comma($str) { if($str == '' || $str == 'undefined'){ return 'NULL,'; }else{ return '\'' . htmlspecialchars($str) . '\','; } }
//使用方法
$arr = Get_Post_Get();//用pg_sql什么的转义 $arr['time'] = date('Y-m-d g:i:s'); $arr_in_up = array( 'id' => 'id', 'date' => 'time' ); //$arr_in_up = array(); //$arr_in_up['id'] = 'id'; //$arr_in_up['date'] = 'time'; $sql = 'insert into test ' . create_insert($arr, $arr_in_up);
很干净的代码。不过有时候写$arr_in_up也会很长,可以让程序自动生成。
我的方法是先把$arr_in_up的值放到 一个csv文件中,反正我们公司的数据库说明也是类似的表格格式,很方便拷。
id,id,x
date,time,x
abc,efg,
csv大约就是这样
//读取CSV $row = 1; $handle = fopen('insert.csv','r'); while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); $row++; for ($i=0; $i < $num; $i++) { if ($i==0){ $aaa[]=$data[$i]; } if ($i==1){ $aaa1[]=$data[$i]; } if ($i==2){ $aaa2[]=$data[$i]; } } } // $arr_in_up = '$arr_in_up'; $i=0; foreach($aaa as $val) { if( $aaa2[$i] != '' )//如果csv的第三格为空就不输出 { $b__ .= " {$arr_in_up}['{$val}'] = '{$aaa1[$i]}';"; } $i++; } $i=0; //echo $a__; echo ' '; echo $b__;
打开php网页,看源代码,就看到自动生成的代码了。
相关文章推荐
- 利用反射+特性实现简单的实体映射数据库操作类(还未做自动生成SQL语句部分)
- 自动生成SQL语句的工具类
- 利用反射自动生成SQL语句(仿Linq)
- 根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句
- Java自动生成mybatis更新sql语句
- 【转载】利用"SQL"语句自动生成序号的两种方式。
- SQL2000中生成带自动编号的新表的sql语句.
- php-自动生成sql语句
- Oracle自动生成数据字典的SQL语句
- C#反射生成简单sql语句
- 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句
- Mybatis自动生成sql语句
- 利用反射自动生成SQL语句(仿Linq)
- 自动生成清空数据库的SQL语句
- 根据实体自动生成sql语句并且执行
- JAVA自定义注解实现SQL语句自动生成DEMO
- MBG(Mybatis generator)自动生成sql语句
- 自动生成清空数据库的SQL语句
- NO2:自动生成sql语句
- 自动生成清空数据库的SQL语句(V2.0)