関数検索($キーワード、$テーブル、$フィールド)
{
//=============================================== ========
// パラメータの正式な説明:
//キーワードは「北京首都方面列車」などのキーワードです。スペースありでもなしでも
//table はテーブル名です (enter_gongyin_pic など)。
//フィールドはフィールドの組み合わせです。フィールドを検索したい場合は、名前を書くだけです
// 3 つ以上検索したい場合は、name+picdir を使用してください
//=============================================== ========
//まずフィールドを決定します
$new_field=explode("+",$field); // + を押すと剥がせます
$field_count=count($new_field); //取得された結果の数
$newstring=explode(" ",$keyword); //スペースで区切る
$newstring2=配列();
//文字列から無駄なスペースとアンクル要素を削除します
$i=0;
foreach ($newstring as $key => $value) {
If($value!="")
{
$newstring2[$i]=$値
$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 *
`$table` から
WHERE `".$new_field[0]."` LIKE '%$newstring_search%'";
}
If($result_count>1) //キーセグメントが複数あるかどうかを判定
{
$sql="SELECT *
`$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) //複数のフィールドを検索 START *********** * ****************
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="SELECT *
`$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
}
それ以外は
//(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."%'";
それ以外
$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 プログラミング設計に役立つことを願っています。
あなたが話している無限レベルは、ツリーの形で無限ではありません。カテゴリの数が無制限で、レベルが 2 つしかないと言っているだけですよね。 A~Z のように 1 つの文字で表します。A はニュース、B はスポーツ、...
ニュースのカテゴリは文字の種類に設定でき、最初の文字は大きな疲れを意味し、次の文字は小さな文字を意味します。カテゴリ (A001 国際ニュース、A002 国内ニュース、B001 バスケットボールなど)
2 つのテーブルを作成します。1 つは、カテゴリ コードとカテゴリ名という 2 つのフィールドを持つニュース カテゴリ テーブルで、もう 1 つのカテゴリ テーブルには、カテゴリという 2 つのフィールドもあります。コードとカテゴリ名
ニューステーブルでは、文字型のカテゴリフィールドを使用するだけで問題ありません。
あなたのようなツリー状のディレクトリ出力を生成するには、まず SQL ステートメントをカテゴリに従って並べ替えるだけで、各データが上記のカテゴリと同じであるかどうかを確認し、+ か | かを判断します。目の前に表示されるのはこれだけです。
tb_test (`use`) 値に挿入 ('test');
上の数字キー 1 の左側にあるこのポイントを使用します
http://www.bkjia.com/PHPjc/906678.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/906678.html技術記事 PHP+Mysql で複数のキーワードとフィールドを含む SQL 文を生成する機能 mysqlsql を実現する この記事では、PHP+Mysql で複数のキーワードとフィールドを含む SQL 文を生成する機能を実現する方法について説明します。みんなとシェアしましょう...