国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP+Mysql實現多關鍵字與多字段生成SQL語句的函數

2024-09-04 11:43:09
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP+Mysql實現多關鍵字與多字段生成SQL語句的函數,涉及字符串與數組的操作,是構造SQL語句非常實用的技巧,需要的朋友可以參考下

本文實例講述了PHP+Mysql實現多關鍵字與多字段生成SQL語句的函數的方法。分享給大家供大家參考。具體實現方法如下:

先看實例:

  1. $keyword="1 2 3"
  2. 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獲得.按空格分開 可以多字段去查找.

實現函數如下:

  1. function search($keyword,$table,$field)  
  2. {  
  3. //========================================================  
  4.  
  5. //形參說明:  
  6. //keyword為關鍵字,如“北京首都 方向 火車”。帶有空格或者不帶  
  7. //table為表名,如enter_gongyin_pic。  
  8. //field為字段組合,如查找一個字段就寫好 name   
  9. //如查找兩個以上就用 name+picdir  
  10. //========================================================  
  11. //首先確定field  
  12. $new_field=explode("+",$field); //按+剝離  
  13. $field_count=count($new_field); //得到的結果數量  
  14.  
  15.  
  16. $newstring=explode(" ",$keyword); //按空格剝離  
  17. $newstring2=array();  
  18.    //把字符串去掉沒有用的空格叔祖元素  
  19.    $i=0;  
  20.    foreach ($newstring as $key => $value) {  
  21.    if($value!="")  
  22.    {  
  23.    $newstring2[$i]=$value;  
  24.    $i++;  
  25.    }  
  26.    }  
  27. //把字符串去掉沒有用的空格叔祖元素,  
  28.           
  29. $result_count=count($newstring2); //得到的結果數量  
  30.  
  31. //下面生成SQL語句  
  32.  
  33.  
  34. //********************** if($field_count==1) //找1個字段 START ****************************  
  35. if($field_count==1) //找1個字段  
  36. {  
  37. if($result_count==1) //判斷如果是一個關鍵段  
  38.    {  
  39.    $newstring_search=$newstring2[0];  
  40. $sql="SELECT *   
  41. FROM `$table`   
  42. WHERE `".$new_field[0]."` LIKE '%$newstring_search%'";  
  43.    }  
  44.        
  45.    if($result_count>1) //判斷如果是多個關鍵段  
  46.    {  
  47.  
  48. $sql="SELECT *   
  49. FROM `$table`   
  50. WHERE ";  
  51. $sql_add="";  
  52. foreach ($newstring2 as $key => $value)  
  53. {  
  54.   if($key==0)  
  55.    {  
  56.    $sql_add=$sql_add."`".$new_field[0]."` LIKE '%".$value."%'";  
  57.    }  
  58.    else  
  59.    {  
  60.    $sql_add=$sql_add." OR `".$new_field[0]."` LIKE '%".$value."%'";  
  61.       
  62.         }  
  63.           
  64.           }  
  65.     
  66. $sql=$sql.$sql_add;  
  67. }  
  68.  
  69. }  
  70.  
  71. //********************** if($field_count==1) //找1個字段 END ****************************  
  72.  
  73.  
  74. //********************** if($field_count>1) //找多個字段 START ****************************  
  75. if($field_count>1) //找多個字段,這個時候$new_field是一個數組。擁有多個字段  
  76. {  
  77. if($result_count==1) //判斷如果是一個關鍵段  
  78. {  
  79.         $newstring_search=$newstring2[0]; //$newstring_search是關鍵字  
  80.         $sql="SELECT *   
  81.         FROM `$table`   
  82.         WHERE ";  
  83.         $sql_add="";//新增加字段  
  84.         foreach ($new_field as $key => $value)  
  85.         {  
  86.                         if($key==0)  
  87.                         {  
  88.                         $sql_add=$sql_add."`".$value."` LIKE '%".$newstring_search."%'";  
  89.                         }  
  90.                         else  
  91.                         {  
  92.                         $sql_add=$sql_add." OR `".$value."` LIKE '%".$newstring_search."%'";  
  93.                         }  
  94.         }  
  95.         $sql=$sql.$sql_add;  
  96. }  
  97. if($result_count>1) //判斷如果是多個關鍵段(多個關鍵字)==========================  
  98. {  
  99. $sql="SELECT *   
  100. FROM `$table`   
  101. WHERE ";  
  102. $sql_add="";//新增加字段  
  103. foreach ($new_field as $key => $value)  
  104. {  
  105.   if($key==0) //遇到$new_field[0]時候 例:`a` LIKE '%1%' OR `a` LIKE '%2%' OR `a` LIKE '%3%'  
  106.    { //嵌套foreach  
  107.      foreach ($newstring2 as $key2 => $value2)  
  108.       {  
  109.                   if($key2==0)  
  110.                    {  
  111.                         $sql_add=$sql_add."`".$value."` LIKE '%".$value2."%'";  
  112.                    }  
  113.                    else  
  114.                    {  
  115.                    $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  
  116.                    }  
  117.         }  
  118.     //嵌套foreach  
  119.    }  
  120.    else   
  121.    //(如果是多字段的比如查name+picdir表)開始FOREACH連續循環,每次執行ELSE $new_field[1] $new_field[2] $new_field[3]。  
  122.    //對應的值為$value  
  123.   {  
  124.    //嵌套foreach(多字段與多關鍵字)  
  125.    foreach ($newstring2 as $key2 => $value2)  
  126.       {  
  127.                   if($key2==0)  
  128.                    {  
  129.                         $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  
  130.                    }  
  131.                    else  
  132.                    {  
  133.                    $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'";  
  134.                    }  
  135.            }  
  136.    //嵌套foreach  
  137.    }  
  138.          //www.survivalescaperooms.com 
  139. }//foreach ($new_field as $key => $value)結束  
  140. $sql=$sql.$sql_add;  
  141. }//if($result_count>1)結束  
  142. }//if($field_count>1) 結束  
  143. //********************** if($field_count>1) //找多個字段 END ****************************  
  144. return $sql;  

希望本文所述對大家的PHP程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平谷区| 丹巴县| 清涧县| 田阳县| 鄂州市| 峨眉山市| 当雄县| 通道| 新河县| 天水市| 紫云| 淳安县| 东至县| 绥芬河市| 瑞安市| 旬邑县| 富宁县| 翼城县| 潼关县| 莫力| 光山县| 临夏市| 南平市| 社旗县| 芦山县| 霍城县| 卓尼县| 盐源县| 霞浦县| 天镇县| 伊宁县| 东阿县| 临汾市| 通江县| 香河县| 开封市| 五华县| 遂平县| 公安县| 太仆寺旗| 孟连|