MW211 EXIT

devlog
PHP/環境変数による現在地の認識
2011年08月28日
┌───────┬──────────────────────────────┐
│URL名         │http://www.mw211.com/sub/index.php?key=val                  │
├───────┼──────────────────────────────┤
│ファイルパス名│C:\www\htdocs\sub\index.php                                 │
└───────┴──────────────────────────────┘
上記例において、「index.php」にて、それぞれの位置情報を得るPHPの記述。
┌──────────────┬───────────────────────┐
│index.php                   │basename($_SERVER['SCRIPT_NAME'])             │
├──────────────┼───────────────────────┤
│index                       │basename($_SERVER['SCRIPT_NAME'], '.php')     │
└──────────────┴───────────────────────┘
┌──────────────┬───────────────────────┐
│key=val                     │$_SERVER['QUERY_STRING']                      │
└──────────────┴───────────────────────┘
┌──────────────┬───────────────────────┐
│sub/index.php?key=val       │$_SERVER['REQUEST_URI']                       │
├──────────────┼───────────────────────┤
│sub/index.php               │$_SERVER['PHP_SELF']                          │
├──────────────┼───────────────────────┤
│sub/index.php               │$_SERVER['SCRIPT_NAME']                       │
└──────────────┴───────────────────────┘
┌──────────────┬───────────────────────┐
│C:\www\htdocs\sub\index.php │___FILE___                                    │
├──────────────┼───────────────────────┤
│C:\www\htdocs\sub           │realpath('.');                                │
│                            │realpath(NULL);                               │
│                            │dirname(___FILE___);                          │
├──────────────┼───────────────────────┤
│C:\www\htdocs               │realpath('..');                               │
│                            │dirname(realpath('.'));                       │
└──────────────┴───────────────────────┘
分類:PHP
PostgreSQL/出力順の指定
2011年08月27日
PostgreSQLには(MySQLでいうところの)「ORDER BY FIELD」がないので、
以下で代用する。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE 列 IN (1, 3, 2)                                                   │
│    ORDER BY CASE 列                                                        │
│               WHEN 1 THEN 1                                                │
│               WHEN 3 THEN 2                                                │
│               WHEN 2 THEN 3                                                │
│               ELSE        0                                                │
│             END ASC;                                                       │
└──────────────────────────────────────┘
分類:PostgreSQL
PostgreSQL/ダミー条件文
2011年08月25日
(複数の)条件文(WHERE句)をプログラムなどで機械的に作成する場合、
「AND」から始まる単位(「AND ~」)で結合していきたいケースがある。

そんな時便利な、先頭に設置する
あってもなくてもよい(必ず真になる)条件文は以下の通り。
「WHERE TRUE」

例えば以下のような感じ。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    WHERE TRUE                                                              │
│      AND 列1 > 0                                                           │
│      AND 列2 > 0;                                                          │
└──────────────────────────────────────┘
分類:PostgreSQL
PHP/特定の文字を含むかの判定
2011年08月24日
PHPである文字列中に、ある特定の文字(列)を含むかを判定する方法。
┌────────────┐
│substr_count('ABC', 'A')│(「ABC」中に「A」を含むか判定する場合)
└────────────┘
上記が「1以上」(=真)なら、「含む」と判定。
ちなみに、これは(「ABC」中の「A」の)文字数をカウントする関数である。
分類:PHP
PHP/PDOのSELECT文実行
2011年08月23日
PHPのPDOのSELECT文実行で、以下と以下は同じ(みたい)。
┌──────────────────────────────────────┐
│foreach ($dbh->query($sql) as $row) {                                       │
├──────────────────────────────────────┤
│$stmt = $dbh->query($sql);                                                  │
│while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {                             │
└──────────────────────────────────────┘
以下と以下も同じ(みたい)。
┌──────────────────────────────────────┐
│$stmt = $dbh->query($sql);                                                  │
├──────────────────────────────────────┤
│$sth = $dbh->prepare($sql);                                                 │
│$sth->execute();                                                            │
└──────────────────────────────────────┘
分類:PHP、PDO
SQL/テーブル(表)の全レコード削除
2011年08月22日
┌──────────────────────────────────────┐
│DELETE FROM 表;                                                             │
└──────────────────────────────────────┘
上記のように、DELETE文を無条件(条件無し)で実行すれば、全レコードが削除される。

テーブルを空っぽにするという意味においては、以下も同じ。
┌──────────────────────────────────────┐
│TRUNCATE TABLE 表;                                                          │
└──────────────────────────────────────┘

ただし、動作としては、DELETE文はレコード数分実行されるのに対して
TRUNCATE文は、テーブル数分(つまり一回)実行されるイメージなので
後者がおすすめ。
分類:SQL
PHP/セッション数を数える方法
2011年08月21日
セッション数(セッションファイル数)を数える方法は以下の通り。
┌──────────────────────────────────────┐
│count(glob(session_save_path().'/sess_*'))                                  │
└──────────────────────────────────────┘
glob関数って便利だね。

ちなみにセッションファイルは、「'sess_'+セッションID」というファイル名である。
分類:PHP
PHP/配列から重複を除外する方法
2011年08月20日
単純な一次元配列では以下の通り。
┌──────────────────────────────────────┐
│$配列 = array_unique($配列);                                                │
└──────────────────────────────────────┘

「''」を除去したい場合は以下の通り。
┌──────────────────────────────────────┐
│$配列 = array_merge(array_diff($配列, array('')));                          │
└──────────────────────────────────────┘
分類:PHP配列
PHP/ループ時の注意点
2011年08月19日
┌──────────────────────────────────────┐
│for (ループ条件) {                                                          │
│  if (ループの先頭に戻る条件) {                                             │
│    continue;                                                               │
│  }                                                                         │
│  // 実行しない処理                                                         │
│}                                                                           │
└──────────────────────────────────────┘
for文(ループ文)を途中で元に戻る(後続をスキップする)場合には
「continue」文を使うが、
switch-case文で条件分岐してこれを行う場合、
PHPではswitch-case文もループ文の一種とみなされるので
(二重にcontinueするように)「continue 2」としなければならない。
┌──────────────────────────────────────┐
│for (ループ条件) {                                                          │
│  switch (ループの先頭に戻る条件) {                                         │
│    case  '(該当する条件)':                                                 │
│      continue 2;                                                           │
│  }                                                                         │
│  // 実行しない処理                                                         │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP
PHP/タイムゾーンの設定
2011年08月18日
php.iniファイルに以下のような感じで設定する。
┌──────────────────────────────────────┐
│[Date]                                                                      │
│date.timezone = Asia/Tokyo                                                  │
└──────────────────────────────────────┘

プログラム中で設定する場合は以下のような感じ。
┌──────────────────────────────────────┐
│date_default_timezone_set('Asia/Tokyo');                                    │
└──────────────────────────────────────┘
分類:PHP
前へ 1 … 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 次へ