簡単に。
これ
このタイプで作ったカラムを活用するという話。
登録
JSON形式っぽい文字列を作って放り込むというだけことだったりする。
$jsonSet = '{"key1":"val1","key2":"val2",...}';
中身に変数を使う場合はこんな感じ。
$val1 = '***';
$val2 = '***';
$jsonSet = '{"key1":"'.$val1.'","key2":"'.$val2.'",...}';
入れるデータの形式に気をつけるだけ。
INSERTは普通にやる。
$jsonSet = '{"key1":"val1","key2":"val2",...}';
$example01 = '***';
$example02 = '***';
$sqlKey = '(`jsonColumn`, `example1`, `example2`)';
$sqlValue = '(:jsonColumn, :example01, :example02)';
/* $dbh略 */
$sql = "INSERT INTO `example_table` {$sqlKey} VALUES {$sqlValue}";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':jsonColumn', $jsonSet);
$stmt->bindValue(':example01', $example01);
$stmt->bindValue(':example02', $example02);
$stmt->execute();
$dbh = null;
そんな感じで。
取得・出力
jsonの書式を守ってるので、取り出しもそれに倣う。
まずはデータを拾ってくる。
$sql = "SELECT * FROM `example_table` 【略】";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$dbh = null;
カラムの情報を取り出す。
if(empty($stmt)){
print 'データなし';
}else{
foreach ($stmt as $row) {
//jsonカラムのデータを取得
$jsonSet = $row['jsonColumn'];
//jsonを連想配列に変換
$jsonSetArray = json_decode($jsonSet, true);
//keyを指定して値を出力
print $$jsonSetArray['company'];
}
}
連想配列にしたら、あとは煮るなり焼くなり使いやすいように展開すればいい。
そんな感じで。
コメント