maki-o memo

制作に関する私的なメモです

array_key_exists

bool array_key_exists ( mixed key, array search )

指定した key が配列に設定されている場合、 array_key_exists()TRUE を返します。 key は配列添字として使用できる全ての値を使用可能です。 array_key_exists() はオブジェクトに対しても動作します。

例 1. array_key_exists() の例

<?php $search_array = array('first' => 1, 'second' => 4); if (array_key_exists('first', $search_array)) { echo "The 'first' element is in the array"; } ?>

INSTR でフィールドの文字列検索

フィールドに、'1,2,3'なんて文字列が格納されている場合、 '1'とか'2'とかの単体の検索を複数一気にかけたい場合、

select * from テーブル名 where INSTR(フィールド名,'1') and INSTR(フィールド名,'2');

これで。


条件分岐の別の書き方(三項演算子)

条件文 ? 条件文がtrueの時の処理 : 条件文がfalseの時の処理 ;

例えば、 $_SESSION["hoge"] = $hoge != "" ? $hoge : "";

は、 if ($hoge != ""){ $_SESSION["hoge"] = $hoge; } else { $_SESSION["hoge"] = ""; }

と同じ処理になるので、場合によっては処理をすっきり書くことができる。


LEFT JOIN時のWHERE文

MySQL文で、LEFT JOINを使用すると、指定したフィールドを条件にテーブルを結合してくれるが、その際にWHERE文で動きが特殊なので記載しときます。

例えば、こんな文。 SELECT * FROM?tb1 LEFT JOIN?tb2?ON?tb1.id = tb2.id WHERE tb2.name = NULL;

この場合、結合したテーブル tb2 のnameフィールドがNULLの場合、情報を呼び出す感じになっているが、実際データとして、NULLが入っていないと、抽出されるデータは存在しない状態になってしまう。

それでは困るのでなんとかならないか検索したところ、グッドな関数を発見。

IFNULL ってやつです。

これを使うとこんな感じ。 SELECT * FROM?tb1 LEFT JOIN tb2 ON?tb1.id = tb2.id WHERE IFNULL(tb2.name,0) = '0';

要は、NULLの場合、第二引数に指定している0に置き換えてやり、その置き換えたものをWHERE文で判断している形になります。


INでまとめる

INを用いる事で、SQL文がひとまとまりにできます。

例えば、 UPDATE テーブル名 SET del_flag = '1' WHERE id = '1'; UPDATE テーブル名 SET del_flag = '1' WHERE id = '2'; UPDATE テーブル名 SET del_flag = '1' WHERE id = '3'; と三つの文を書かなければならないところを、

UPDATE テーブル名 SET del_flag = '1' WHERE id IN ('1','2','3');

とする事で、ひとまとまりの文にできます


プロフィール

フロントエンドエンジニア

Tomokazu Makita

名古屋でフリーランスでWeb制作してます。 フロントエンドのことを主にやってます。
a-blog cmsを使用したサイト制作が得意です。
お仕事のご相談随時受付中。

雪山大すき。冬は雪山の合間に仕事します。
財布はいつも吹雪です。

エントリーリスト

タグ