ホームページ >バックエンド開発 >PHPチュートリアル >PHP+Mysql は、複数のキーワードと複数のフィールドを含む SQL ステートメントを生成する関数を実装します。mysqlsql_PHP チュートリアル

PHP+Mysql は、複数のキーワードと複数のフィールドを含む SQL ステートメントを生成する関数を実装します。mysqlsql_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:15:07763ブラウズ

PHP+Mysqlは、複数のキーワードと複数のフィールドを持つSQL文を生成する機能、mysqlsql

を実現します

この記事の例では、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% ' または ' c' のように '%3%'

$keyword は POST または GET で取得され、複数のフィールドで検索できます。 実装関数は次のとおりです:

コードをコピーします コードは次のとおりです:
関数検索($キーワード、$テーブル、$フィールド)
{
//=============================================== ========

// パラメータの正式な説明:
//キーワードは「北京首都方面列車」などのキーワードです。スペースありでもなしでも
//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 プログラミング設計に役立つことを願っています。

php+mysqlで無制限のレベル分類を実現する方法とデータベースを設計する方法? SQL ステートメントはデータを読み取り、配列を生成します

あなたが話している無限レベルは、ツリーの形で無限ではありません。カテゴリの数が無制限で、レベルが 2 つしかないと言っているだけですよね。 A~Z のように 1 つの文字で表します。A はニュース、B はスポーツ、...

ニュースのカテゴリは文字の種類に設定でき、最初の文字は大きな疲れを意味し、次の文字は小さな文字を意味します。カテゴリ (A001 国際ニュース、A002 国内ニュース、B001 バスケットボールなど)

2 つのテーブルを作成します。1 つは、カテゴリ コードとカテゴリ名という 2 つのフィールドを持つニュース カテゴリ テーブルで、もう 1 つのカテゴリ テーブルには、カテゴリという 2 つのフィールドもあります。コードとカテゴリ名

ニューステーブルでは、文字型のカテゴリフィールドを使用するだけで問題ありません。

あなたのようなツリー状のディレクトリ出力を生成するには、まず SQL ステートメントをカテゴリに従って並べ替えるだけで、各データが上記のカテゴリと同じであるかどうかを確認し、+ か | かを判断します。目の前に表示されるのはこれだけです。


mysqlのSQL文にキーワードがある場合の対処法

tb_test (`use`) 値に挿入 ('test');

上の数字キー 1 の左側にあるこのポイントを使用します


http://www.bkjia.com/PHPjc/906678.html

tru​​ehttp://www.bkjia.com/PHPjc/906678.html技術記事 PHP+Mysql で複数のキーワードとフィールドを含む SQL 文を生成する機能 mysqlsql を実現する この記事では、PHP+Mysql で複数のキーワードとフィールドを含む SQL 文を生成する機能を実現する方法について説明します。みんなとシェアしましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。