PHP+Mysql实现多关键字与多字段生成SQL语句的函数


Posted in PHP onNovember 05, 2014

本文实例讲述了PHP+Mysql实现多关键字与多字段生成SQL语句的函数的方法。分享给大家供大家参考。具体实现方法如下:

先看实例:

$keyword="1 2 3";

echo $sql=search($keyword,"enter_gongyin_pic","a+b+c"); //函数生成,没有LIMIT,没有ORDER BY

生成:
SELECT * FROM `enter_gongyin_pic` WHERE `a` LIKE '%1%' OR `a` LIKE '%2%' OR `a` LIKE '%3%' OR `b` LIKE '%1%' OR `b` LIKE '%2%' OR `b` LIKE '%3%' OR `c` LIKE '%1%' OR `c` LIKE '%2%' OR `c` LIKE '%3%'

$keyword由POST或者GET获得.按空格分开 可以多字段去查找.

实现函数如下:

function search($keyword,$table,$field)  

{  

//========================================================  

  

//形参说明:  

//keyword为关键字,如“北京首都 方向 火车”。带有空格或者不带  

//table为表名,如enter_gongyin_pic。  

//field为字段组合,如查找一个字段就写好 name   

//如查找两个以上就用 name+picdir  

//========================================================  

//首先确定field  

$new_field=explode("+",$field); //按+剥离  

$field_count=count($new_field); //得到的结果数量  

  

  

$newstring=explode(" ",$keyword); //按空格剥离  

$newstring2=array();  

   //把字符串去掉没有用的空格叔祖元素  

   $i=0;  

   foreach ($newstring as $key => $value) {  

   if($value!="")  

   {  

   $newstring2[$i]=$value;  

   $i++;  

   }  

   }  

//把字符串去掉没有用的空格叔祖元素,  

          

$result_count=count($newstring2); //得到的结果数量  

  

//下面生成SQL语句  

  

  

//********************** if($field_count==1) //找1个字段 START ****************************  

if($field_count==1) //找1个字段  

{  

if($result_count==1) //判断如果是一个关键段  

   {  

   $newstring_search=$newstring2[0];  

$sql="SELECT *   

FROM `$table`   

WHERE `".$new_field[0]."` LIKE '%$newstring_search%'";  

   }  

       

   if($result_count>1) //判断如果是多个关键段  

   {  

  

$sql="SELECT *   

FROM `$table`   

WHERE ";  

$sql_add="";  

foreach ($newstring2 as $key => $value)  

{  

  if($key==0)  

   {  

   $sql_add=$sql_add."`".$new_field[0]."` LIKE '%".$value."%'";  

   }  

   else  

   {  

   $sql_add=$sql_add." OR `".$new_field[0]."` LIKE '%".$value."%'";  

      

        }  

          

          }  

    

$sql=$sql.$sql_add;  

}  

  

}  

  

//********************** if($field_count==1) //找1个字段 END ****************************  

  

  

//********************** if($field_count>1) //找多个字段 START ****************************  

if($field_count>1) //找多个字段,这个时候$new_field是一个数组。拥有多个字段  

{  

if($result_count==1) //判断如果是一个关键段  

{  

        $newstring_search=$newstring2[0]; //$newstring_search是关键字  

        $sql="SELECT *   

        FROM `$table`   

        WHERE ";  

        $sql_add="";//新增加字段  

        foreach ($new_field as $key => $value)  

        {  

                        if($key==0)  

                        {  

                        $sql_add=$sql_add."`".$value."` LIKE '%".$newstring_search."%'";  

                        }  

                        else  

                        {  

                        $sql_add=$sql_add." OR `".$value."` LIKE '%".$newstring_search."%'";  

                        }  

        }  

        $sql=$sql.$sql_add;  

}  

if($result_count>1) //判断如果是多个关键段(多个关键字)==========================  

{  

$sql="SELECT *   

FROM `$table`   

WHERE ";  

$sql_add="";//新增加字段  

foreach ($new_field as $key => $value)  

{  

  if($key==0) //遇到$new_field[0]时候 例:`a` LIKE '%1%' OR `a` LIKE '%2%' OR `a` LIKE '%3%'  

   { //嵌套foreach  

     foreach ($newstring2 as $key2 => $value2)  

      {  

                  if($key2==0)  

                   {  

                        $sql_add=$sql_add."`".$value."` LIKE '%".$value2."%'";  

                   }  

                   else  

                   {  

                   $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  

                   }  

        }  

    //嵌套foreach  

   }  

   else   

   //(如果是多字段的比如查name+picdir表)开始FOREACH连续循环,每次执行ELSE $new_field[1] $new_field[2] $new_field[3]。  

   //对应的值为$value  

  {  

   //嵌套foreach(多字段与多关键字)  

   foreach ($newstring2 as $key2 => $value2)  

      {  

                  if($key2==0)  

                   {  

                        $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  

                   }  

                   else  

                   {  

                   $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  

                   }  

           }  

   //嵌套foreach  

   }  

          

}//foreach ($new_field as $key => $value)结束  

$sql=$sql.$sql_add;  

}//if($result_count>1)结束  

}//if($field_count>1) 结束  

//********************** if($field_count>1) //找多个字段 END ****************************  

return $sql;  

}

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php中目录,文件操作详谈
Mar 19 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
php 团购折扣计算公式
Nov 24 PHP
php重定向的三种方法分享
Feb 22 PHP
php实现统计邮件大小的方法
Aug 06 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php类常量用法实例分析
Jul 09 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 #PHP
phpnow php探针环境检测代码
Nov 04 #PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 #PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 #PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 #PHP
PHP自动重命名文件实现方法
Nov 04 #PHP
php以post形式发送xml的方法
Nov 04 #PHP
You might like
PHP实现模拟http请求的方法分析
2017/12/20 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
python实现requests发送/上传多个文件的示例
2018/06/04 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python将视频转换为全字符视频
2019/04/26 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
详解Django配置优化方法
2019/11/18 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
女大学生个人求职信
2013/12/09 职场文书
运动会稿件50字
2014/02/17 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
党课心得体会范文
2014/09/09 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
2014年共青团工作总结
2014/12/10 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
《日月潭》教学反思
2016/02/20 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js