ホームページ  >  記事  >  バックエンド開発  >  PHP は、指定されたフィールドをインデックスとして使用してデータベースから取得したデータ配列を返します_PHP チュートリアル

PHP は、指定されたフィールドをインデックスとして使用してデータベースから取得したデータ配列を返します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:01:40750ブラウズ

多くの場合、私たちは新しいプロジェクトに触れてから開発が完了するまで、自分が書いたコードをじっくりと読み返しますが、その多くは以前に使いこなしたコードです。したがって、新しいプロジェクトを完了するたびに、プロジェクトの概要とコードの概要を適切に実行すると、将来のプロジェクトでそれを使用できるようになり、コードの最適化やより良いアイデア、より迅速な実装方法など、予期せぬ利益が得られる可能性が非常に高くなります。 。

優れたプログラム開発者を決定するのは、コードの量ではなく、プログラム コードの単純さと、複雑なロジックにもかかわらず実装の容易さである場合があります。これらは、プログラマーが優れたプログラマーであるかどうかを示す要素です。私たちは、昼も夜も夜遅くまで残業して、大量のコードを急いで書くプログラマーにはなりたくないのです。
この記事では、他の人のコードを見て学んだいくつかの PHP プログラミング スキルを紹介します。また、私自身がまとめたものもあります。

特定のフィールドをインデックスとして使用して、データベースから取得したデータ配列を返します
例を挙げると簡単です:
他の Web サイトからの指定されたサイトのトラフィックをカウントし、そのサイトへの小さなバックエンドを作成するとします。各ウェブサイトの毎日の受信トラフィック状況を確認します。まず 2 つのデータ テーブルを構築しましょう:
テーブル 1、サイト構成テーブル (これらの Web サイトのトラフィックのみをカウントします)

コードをコピーします コードは次のとおりです:

CREATE TABLE `site_config` (
`id ` smallint(5 ) unsigned NOT NULL auto_increment COMMENT '主キー、自動インクリメント',
`sid` smallint(5) unsigned NOT NULL COMMENT 'ウェブサイト ID',
`site_url` varchar(128) NOT NULL COMMENT 'ウェブサイト URL address',
`site_name ` varchar(80) NOT NULL COMMENT 'Webサイト名',
`add_time` タイムスタンプ NOT NULL デフォルト CURRENT_TIMESTAMP COMMENT '時間を追加',
PRIMARY KEY (`id`),
UNIQUE KEY `adid` ( `sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='サイト構成テーブル';

表 2、サイトトラフィック統計テーブル (ユーザーごとに 1 つのレコード)
コードをコピー コードは次のとおりです:

CREATE TABLE `site_stat ` (
`id` int(11) unsigned NOT NULL auto_increment COMMENT '主キー、自動インクリメント',
`sid` smallint(5) unsigned NOT NULL COMMENT 'ウェブサイト ID',
`ip_address` varchar(32) NOT NULL COMMENT 'ユーザー IP'、
`add_time` タイムスタンプ NOT NULL デフォルト CURRENT_TIMESTAMP COMMENT '時間を追加'、
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='サイト トラフィック統計テーブル';

なぜなら、site_config テーブルの読み取り操作は書き込み操作よりも大きいため、タイプは MyISAM に設定され、site_stat テーブルの書き込み操作は読み取り操作よりも大きいため、テーブル タイプを InnoDB に設定します。 (これらはデータ設計時に考慮する必要があることであり、速度が大幅に向上します)。
トピックに戻り、テーブル site_config に複数のデータがある場合:
データ形式は次のとおりです: id、sid、site_url、add_time
1,200,baidu.com,2013-06-30 14:20:00
2,201 、google.com、2013-06-30 14:20:00
3,202、cnblogs.com、2013-06-30 14:20:00
4,203、codejia.net、2013-06-30 14:20:00
サイト トラフィック統計テーブル 次のように、一部のデータが site_stat に生成されています:
データ形式は次のとおりです: id、sid、ip_address、add_time
1,200,167.87.32.4,2013-06-30 14:40:00
2,200,192.168.11.56,2013- 06-30 14:40 :10
3,202,167.87.32.4、2013-06-30 14:40:10
4,202,192.168.11.56、2013-06-30 14:40:20
5,203,167.87.32。 4,2013-06-30 14: 40:20
6,202, 10.10.10.10,2013-06-30 14:40:30
7,200,167.87.32.4,2013-06-30 14:40:31
バックグラウンドで作成する必要があるレポート形式は次のとおりです: date,ウェブサイトID、ウェブサイトURL、トラフィック数 (トラフィックのないサイトも表示され、トラフィックは0として表示されます)
日付に従って、SIDグループに従って、テーブルsite_statで考えてから左結合しますテーブル site_config これは明らかに私が共有する方法ではありません。
これを行うには 2 つの SQL を使用します。1 つはすべてのサイトを取得するもので、もう 1 つは指定された日付のサイトのトラフィック統計を取得するものです。

SQL1 はすべてのサイトを取得します:
コードをコピーします コードは次のとおりです:

SELECT sid,site_url,site_name FROM site_config

SQL2 はサイト統計を取得します (今日の場合):
コードをコピーします コードは次のとおりです:

SELECT sid,COUNT(1) AS Come_total FROM site_stat
WHERE add_time>='2013-06-30 00:00:00'
AND add_time<='2013-06 -30 23:59:59 '
GROUP BY sid

先ほど述べたことの多くは、渡されたフィールドをインデックスとして使用して 2- を返す PHP メソッドを共有しましょう。次元配列:
コードをコピーします コードは次のとおりです:

保護された関数 getList($sql,$filed = null){
$res = mysql_query($sql,$this->link_sc);
$data = array(); {
while($row = mysql_fetch_assoc($res)){
$data[] = $row;
}
}else{
while($row = mysql_fetch_assoc($res)){
$data[$row[$ filed]] = $row;
}
}
return $data;
}

渡されたフィールドは select によって返される必要があることが前提です。 。 現場で。
すべてのサイトを取得するときに past フィールドを渡す必要はありませんが、サイトのトラフィック統計を取得するときに、次のようにサイト sid を渡します:


コードをコピーします コードは次のとおりです:
$sites = getList($sql1); //すべてのサイト
$data = getList($sql2,'sid'); // サイトのトラフィック データ、インデックスとして sid を持つ 2 次元配列を返します


最後に, レポートを表示するときはforeach Loop $sitesを使用し、トラフィックを取得するときは配列$dataに移動してインデックスsid付きのデータを取得するだけです。
とても便利でマスターしやすいので、よく使っています。

最後に、上の表の統計結果レポートを見てください:
形式は次のとおりです: 日付、Web サイト ID、Web サイト URL、トラフィック数
2013-06-30,200,baidu.com,3
2013-06-30,201 ,google.com,0
2013-06-30,202,cnblogs.com,3
2013-06-30,203,codejia.net,1
要約: これだけ書くと、ほんの小さなスキルを説明しているように見えますが、そうではありません。このスキルを過小評価すると、時間を大幅に節約できます。そのため、皆さんもコードを書くときにもっとまとめて、ブログパークに来てみんなとコミュニケーションを取りながら学んでいけば、あなたのプログラミングレベルは確実に早く上がります!

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

tru​​ehttp://www.bkjia.com/PHPjc/327982.html技術記事多くの場合、新しいプロジェクトに出会ってから開発が完了するまで、自分が書いたコードをじっくりと読み返しますが、その多くは以前に使いこなしたコードです。それでは最後に…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。