哥的SQL 语句生成函数短的过分
时间:2011-07-14
来源:互联网
/**
* 生成sql语句,如果传入$in_cloumn 生成格式为 IN('a', 'b', 'c')
* @param $data 条件数组或者字符串
* @param $front 连接符
* @param $in_column 字段名称
* @return string
*/
function to_sqls($data, $front = ' AND ', $in_column = false) {
if($in_column && is_array($data)) {
$ids = '\''.implode('\',\'', $data).'\'';
$sql = "$in_column IN ($ids)";
return $sql;
} else {
if ($front == '') $front = ' AND ';
if(is_array($data) && count($data) > 0) {
$sql = '';
foreach ($data as $key => $val) {
if(is_numeric($key)) {
$sql .= $front . ' ('.to_sqls($val).')';
continue;
}
if (strtoupper($key) == 'OR'){
$sql .= ' OR ('.to_sqls($val," $key ").')';
continue;
}
$sql .= $sql ? " $front `$key` = '$val' " : " `$key` = '$val' ";
}
$sql = preg_replace( '/^\s*'.$front.'\s*/', '', $sql );
$sql = preg_replace( '/\s*'.$front.'\s*$/', '', $sql );
$sql = trim($sql);
return $sql;
} else {
return $data;
}
}
}
$where = array();
$where['id'] = '250'; //等于条件
$where[] = "end_time > '{$daytime}'";//自写条件
$where['OR'] = array("end_time <> '{$daytime}'","1end_time <> '{$daytime}'");//OR无限嵌套条件
$where[] = array(array("end_time <> '{$daytime}'","1end_time <> '{$daytime}'"));//自写无限嵌套条件
$sql = to_sqls($where);
print($sql);exit;
生成结果
`id` = '250' AND (end_time > '1310622101') OR ((end_time <> '1310622101') OR (1end_time <> '1310622101')) AND (((end_time <> '1310622101') AND (1end_time <> '1310622101')))
接到 Where 后就行了多爽 欢迎拍砖
* 生成sql语句,如果传入$in_cloumn 生成格式为 IN('a', 'b', 'c')
* @param $data 条件数组或者字符串
* @param $front 连接符
* @param $in_column 字段名称
* @return string
*/
function to_sqls($data, $front = ' AND ', $in_column = false) {
if($in_column && is_array($data)) {
$ids = '\''.implode('\',\'', $data).'\'';
$sql = "$in_column IN ($ids)";
return $sql;
} else {
if ($front == '') $front = ' AND ';
if(is_array($data) && count($data) > 0) {
$sql = '';
foreach ($data as $key => $val) {
if(is_numeric($key)) {
$sql .= $front . ' ('.to_sqls($val).')';
continue;
}
if (strtoupper($key) == 'OR'){
$sql .= ' OR ('.to_sqls($val," $key ").')';
continue;
}
$sql .= $sql ? " $front `$key` = '$val' " : " `$key` = '$val' ";
}
$sql = preg_replace( '/^\s*'.$front.'\s*/', '', $sql );
$sql = preg_replace( '/\s*'.$front.'\s*$/', '', $sql );
$sql = trim($sql);
return $sql;
} else {
return $data;
}
}
}
$where = array();
$where['id'] = '250'; //等于条件
$where[] = "end_time > '{$daytime}'";//自写条件
$where['OR'] = array("end_time <> '{$daytime}'","1end_time <> '{$daytime}'");//OR无限嵌套条件
$where[] = array(array("end_time <> '{$daytime}'","1end_time <> '{$daytime}'"));//自写无限嵌套条件
$sql = to_sqls($where);
print($sql);exit;
生成结果
`id` = '250' AND (end_time > '1310622101') OR ((end_time <> '1310622101') OR (1end_time <> '1310622101')) AND (((end_time <> '1310622101') AND (1end_time <> '1310622101')))
接到 Where 后就行了多爽 欢迎拍砖
作者: zhidc 发布时间: 2011-07-14
哥可以理直气壮的说, 哥的每一条SQL语句, 哥都是精雕细琢了的.
如果说编程是门手艺活, SQL语句便是手艺中的手艺了. 流水线上出来的东西, 能跟手艺相比?
如果说编程是门手艺活, SQL语句便是手艺中的手艺了. 流水线上出来的东西, 能跟手艺相比?
作者: sztime 发布时间: 2011-07-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28