> 백엔드 개발 > PHP 튜토리얼 > PHP Mysql은 여러 키워드와 fields_php 기술을 사용하여 SQL 문을 생성하는 함수를 구현합니다.

PHP Mysql은 여러 키워드와 fields_php 기술을 사용하여 SQL 문을 생성하는 함수를 구현합니다.

WBOY
풀어 주다: 2016-05-16 20:32:52
원래의
995명이 탐색했습니다.

이 기사의 예에서는 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으로 가져오며 여러 필드에서 검색할 수 있습니다. 구현 기능은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
함수 검색($keyword,$table,$field)
{
//================================================ ========

//공식 매개변수 설명:
//keyword는 "Beijing Capital Direction Train"과 같은 키워드입니다. 공백 유무
//table은 Enter_gongyin_pic과 같은 테이블 이름입니다.
//필드는 필드의 조합입니다. 필드를 찾으려면 이름만 입력하세요.
//2개 이상 찾으려면 picdir이라는 이름을 사용하세요
//================================================ ========
//먼저 필드를 결정합니다
$new_field=explode(" ",$field); //제거하려면 누르세요
$field_count=count($new_field); //얻은 결과 개수


$newstring=explode(" ",$keyword); //공백으로 나누기
$newstring2=배열()
//문자열에서 불필요한 공백과 삼촌 요소를 제거합니다
$i=0
foreach($newstring을 $key => $value) {
if($value!="")
{
$newstring2[$i]=$값
$나는
}  
}  
//문자열에서 불필요한 공백 요소를 제거합니다.
                                                                            $result_count=count($newstring2); //얻은 결과 개수

//아래 SQL문 생성


//************************ if($field_count==1) //필드 1개 찾기 시작 ********** * *****************
if($field_count==1) //필드 1개 찾기
{
if($result_count==1) //키 세그먼트인지 판단
{
$newstring_search=$newstring2[0]
$sql="SELECT *
`$table`에서
WHERE `".$new_field[0]."` LIKE '%$newstring_search%'";
}  
                         
if($result_count>1) //키 세그먼트가 여러 개 있는지 판단
{

$sql="선택 *
`$table`에서
어디서 ";
$sql_add=""
foreach($newstring2 as $key => $value)
{
if($key==0)
{
$sql_add=$sql_add."`".$new_field[0]."` LIKE '%".$value."%'"; }  
그렇지 않으면
{
$sql_add=$sql_add." OR `".$new_field[0]."` LIKE '%".$value."%'";        
~                                                                             ~  
$sql=$sql.$sql_add
}

}

//************************ if($field_count==1) //필드 1개 찾기END ************* *****************


//************************ if($field_count>1) //여러 필드 찾기 시작 *********** * ****************
if($field_count>1) //여러 필드를 찾습니다. 이때 $new_field는 배열입니다. 여러 필드가 있음
{
if($result_count==1) //키 세그먼트인지 판단
{
          $newstring_search=$newstring2[0] //$newstring_search가 키워드입니다
         $sql="SELECT *                                                                `$table`에서
어디서 ";
           $sql_add="";//새로 추가된 필드
foreach($new_field as $key => $value)
~ If($key==0)
~ $sql_add=$sql_add."`".$value."` LIKE '%".$newstring_search."%'"
~          또 다른~ $sql_add=$sql_add." OR `".$value."` LIKE '%".$newstring_search."%'"
~          ~ $sql=$sql.$sql_add
}
if($result_count>1) //키 세그먼트가 여러 개인지 판단(다중 키워드) ==========================
{
$sql="선택 *
`$table`에서
어디서 ";
$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."%'"
~                 또 다른 ~ $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'"
~                 ~ //중첩 foreach
}  
그렇지 않으면
//(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."%'"
~                 또 다른 ~ $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 ************ ****************
$sql을 반환
}


이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿