いつぞやmysql接続にはPDOを使うと言いました。
ごめんなさい。あれは嘘でした
とりあえず動けばいいものを作るなら、mysqliのほうが使いやすかったです。
ただ問題は、どっちにしてもVBAのADO接続より使いにくい!
特にinsertなのですが、突っ込み方は2種類です。
後者はセキュリティ的な意味もあるようです。
わたしがこう書けたらいいな!というのがこんなかんじ。
$db = getDb(); $rst = $db->open('TableName'); $rst->addNew; $rst->Fields('id') = 1; $rst->Fields('name')='なずな'; $rst->update;
ado接続したことある方にならきっと伝わるはず!
これがmysqliでぐぐってみると。
$db=getDb() $stmt = $db->prepare("insert into TableName(id,name) value(?,?); $stmt ->bind_param($id,$name); $id = 1; $name = 'nazuna'; $stmt->execute();
こんなかんじ。※動くかどうかはチェックしてません
1見すると行数おんなじだし、変わらなさそーに見えるんですが2点どーしても気に入りません。
SQL文の文字列の中にテーブル名が含まれちゃってる
これのせいでテーブル名を変数で持たせるのがめんどいです。
カラム名の記述回数が多い。ついでに変数名になってる
idと$idで合計3回書いてます。これが長いカラム名だったらカラム数自体たくさんなると
マウス投げたくなります
自分でクラス作ってなんとかするしかないんでしょーか…。
というわけで、のっけから文句を始めるタイプの皆様こんにちわ。
本日はCRUDというお話です。
データベースに接続できたなら、登録して、読めて、変更して、削除するのが基本だよね!という用語です。
これを作ると、Excelのオートフィルタの偉大さがよくわかります。
基本ではあるものの、これだけあっても驚くほど使いみちがありません。
CRUDのRの部分。Readが問題なのですよね。
そのまま読んでもほとんど意味がなくて、大抵条件付けが入ります。
直近1ヶ月のデータがみたいとか固定ならよいのですが、
ユーザーに選ばせようとすると突然難易度があがります
だけれど、これが出来ると驚きの汎用性!
オートフィルタつけたExcelのデータベースっぽい表がいろいろ活躍できるのは御存知の通り!
でもでも、Excelはセルを書き換えるだけで更新できるよですって?
そんな感じで更新するのはものすごく大変で考えたくないです…。
あ でもcakePHPで焼くとそんな感じのコマンド一発で出来た気もしました。
さてさて、最近はすっかり周りを見る余裕がありません。
明日から今回の授業を活かして、twitter風の投稿システム作成が課題です。
随分劣ると思うのでr<s<t と戻っていって、awitterなんて名前にでもしようと思います。