ホームページ >バックエンド開発 >PHPチュートリアル >2 つのテーブルをクエリして出力する

2 つのテーブルをクエリして出力する

WBOY
WBOYオリジナル
2016-06-13 12:49:35889ブラウズ

2 つのテーブルをクエリして出力
全体の状況は次のようになります:
テーブル構造
ID名情報
1 列 1 (ストレージ スタイルは:{s:6:"picid";s:2:"74";s:9:"text";s:1:"storage content area";})
2 列 2 (ストレージ スタイルは:{s:6:"picid";s:2:"75";s:9:"text";s:1:"storage content area";})
B テーブル構造
ID URL
74 画像パス
まず、テーブル A の情報内の picid ID 番号 74 と 75 の配列がクエリ
を通じて取得されます。 出力スタイルは次のとおりです:
配列
(
[0] => 74
[1] => 75
)
次に、テーブル B の ID 74 と 75 のデータをクエリします
では、これら 2 つのテーブルの内容をどのように関連付けて出力するのでしょうか。
出力結果は次のとおりです:
配列
(
[0] => 配列
(
[id] => [名前] => [URL] = & gt; 画像パス
[情報] = & GT; 情報
のテキストの内容 )

[1] => 配列
(
[ID] = & gt; 2
[名前] => [URL] = & gt; 画像パス
[情報] = & GT; 情報
のテキストの内容 )
....


-----解決策---------
情報内のテキストの内容を取り出すの表現 substring_index(substring_index(substr(info,locate('"text"', info)), '"', 4), '"', -1) as info
2 つのテーブル間の関連付け条件
テーブル B.id = substring_index(substring_index(substr(info,locate('"picid"', info)), '"', 4), '"', -1)

式は非常に長いので、ストアド プロシージャを使用して短縮できます

原理はとてもシンプルです

a:{s:6:"picid";s:2:"74";s:9:"テキスト";s:1:"ストレージコンテンツエリア";}

substr(info,locate('"picid"', info)) は、「picid」セクションを取得するために使用されます "picid";s:2:"74";s:9:"text";s:1:"ストレージコンテンツ領域";}

内部の substring_index は、「」が 4 回出現する前のコンテンツを取得するために使用されます。 "picid";s:2:"74

外側の substring_index は、「」が最後に出現した後の内容を取得するために使用されます。 74

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。