[PHP/MySQL]連想配列のINSERTについて


連想配列にキーと値(1対1)の組合せを複数格納しています。
これをテーブルの1レコード分に見立ててINSERTしたいです。
連想配列にはレコードのカラムのすべての要素が格納されているわけではなく一部の要素のこともあります。
(時によって格納しているキー/値は異なります)

例えば、
テーブル名:members
カラム:会員ID(主キー)、住所、氏名、性別、年齢、職業 ※すべてvarchar

に、連想配列
$values = array(
 "会員ID"=>"ID00010",
 "住所"=>"埼玉県○市",
 "氏名"=>"○本○郎",
 "年齢"=>"20"
);

をINSERTするケースです。
この例では、会員ID、住所、氏名、年齢が連想配列に格納されていますが、
職業が格納されたり、年齢が格納されなかったり、格納されているもの処理毎に不定です。(主キーの会員IDは必ず設定します)

この$valuesをINSERTするコードを書きたく、
1カラムづつ、$valuesに格納されているかどうか判定して、SQL用の文字列を操作していくコードは書けたのですが、メンテナンスを考えて、もう少しエレガントに書けないかと思い投稿させていただきました。

検索もしてみたのですが、なかなかぴったりくるコードに出会えず。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/09/10 10:12:40

ベストアンサー

id:tezcello No.1

回答回数460ベストアンサー獲得回数69

$defaultValue = array(
 '会員ID'=>null,
 '住所'=>'日本',
 '氏名'=>'通りすがり',
 '性別'=>'不明',
 '年齢'=>'永遠の23歳',
 '職業'=>'ぷー'
);

のようなデフォルト値の配列を作っておいて、
$value = $defaultValue + $values;
してから、全てのカラムについて挿入すればよいと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません