이 기사의 예에서는 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 프로그래밍 설계에 도움이 되기를 바랍니다.