PHP 開発における 2 つの実践的な SQL_PHP チュートリアル

WBOY
リリース: 2016-07-13 16:58:21
オリジナル
808 人が閲覧しました

過去 2 日間のプロジェクト開発では、いくつかの実用的な関数を実装する必要があり、2 つの SQL を使用しました。要約すると、次回は忘れてしまうのではないかと思います。

1. 送信されたコンテンツと一致するコンテンツをデータベースから取得します

たとえば、送信されたデータが「水泳」の場合、データベース内の「水泳が好き」という単語は一致するとみなされますが、これではまだ十分ではありません。たとえば、「週末に水泳に行きます」と入力した場合、はデータベース内で「泳いでいる」です。 の内容は実際には似たような意味ですが、like を使用してそれを見つけることができなかったので、関数にカプセル化された次の SQL を考えました:

関数 getRelationTags($tagTitle,$cols="*")
{
$titleFeildStrLen = 24; //3*8 漢字 4 文字または 24 文字
if ("" == $tagTitle) return false;

$sql = "select $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%".$tagTitle."%' )) LENGTH(タイトル) で並べる ";
$data =& $db->getAll($sql);
if(DB::isError($data)){
return $this->returnValue($data->getMessage());
}その他{
$data を返します;
}
}

SQLを見てください:

select $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%" .$tagTitle."%' )) 長さ(タイトル)で並べ替えます

実際には、これは 2 回の照合で、1 回目は送信されたタグとデータベース内のタグを照合する前方照合で、2 回目はデータベース内のタグと送信されたタグを照合します。

重要なのは LOCATE() 関数であり、mysql のエンコーディングが次のとおりであるため、この関数も長さを制限します。
名前「utf8」を設定します

utf8 なので、中国語の文字は 3 バイトを使用し、文字は 1 バイトしか使用しないため、上記は次のようになります:

$titleFeildStrLen = 24;

つまり、24 文字の範囲内の 8 つの漢字とタグを照合します。


2. 類似ソート

たとえば、データベースの内容は次のとおりです:

北京 1023 1

天津 2301 1

上海 3450 1

天津 4520 1

北京 3902 1

次に、すべての都市データを抽出し、各都市データの合計数を他の都市の合計数と比較して、並べ替える必要があります。

関数コードは次のとおりです:

関数 getMostCity($num)

{

$sql = "select count(id) as num,city from ".$TableName." where city != '' group by city order by num desc limit 0,$num;";

$data =& $db->getAll($sql);

if($db->isError($data))

false を返します;

それ以外

$data を返します;

}

上記の SQL ステートメントに注目してみましょう:

select count(id) as num,city from ".$TableName." where city != '' 数値による順序でグループ化 制限 0,$num

中心となるのは都市ごとのグループで、類似した都市を収集し、最も多い都市から最も少ない都市へと並べ替えます。

http://www.bkjia.com/PHPjc/631404.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631404.html技術記事この 2 日間のプロジェクト開発では、いくつかの実用的な関数を実装する必要があり、要約すると、次回は忘れてしまうのではないかと心配しています。 1. 送信されたコンテンツと一致するコンテンツをデータベースで検索します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート