LoginSignup
1
1

More than 5 years have passed since last update.

データベースクラスを作成するぞ - vol.2

Posted at

まえがき

あーなるほど。
追記編集するのが面倒なので
順番に投稿しよう。そうしよう。

…というわけで、
データベースクラスの再開。

色々と試行錯誤を重ねてはいるものの、
意味がわからなくなり、プチパニック…。

とりあえず、発行したいsql文が似ているから
やりやすいだろう…という安易な考えで、
以下の2つの処理をどうにかできないかと。

public function select($テーブル名とか) {
    発行したいsql文 = "SELECT * FROM `テーブル名` WHERE `条件`"
}

public function delete($テーブル名とか) {
    発行したいsql文 = "DELETE FROM `テーブル名` WHERE `条件`"
}

// 2つのsql文は似ている?!ww
sql文 = select('SELECT * FROM', 'テーブル名', '条件');
sql文 = delete('DELETE FROM', 'テーブル名', '条件');

考察

ここから、別のfunctionに飛ばして
晴れてsql文を実行できる、という形が良いのかな。

ただ、ここでちょっと悩んでいるのが '条件' の部分。

おそらく、配列をうまく利用するんだろうけど。
例えば『会員番号2015番の人を削除』ならば、

sql文 = delete("DELETE FROM 'テーブル名', '会員番号' = '2015'");

という感じで使いたい。ここまではOK。

でも、例えば『スコアが60点以下の人を全削除』なら、

sql文 = delete("DELETE FROM 'テーブル名', 'スコア' <= '60'");

と、なる。もちろん意味は分かる。

ただ、ここで問題…というか悩む。
比較演算子 ( '='とか '<='とか ) が
変わってしまう、ということ。

「なら配列に一緒に入れちゃえ!」ってことですが、
それじゃあ比較しないの場合、どーすんのよ…と。

んー飛ばしたfunctionの先で、
ifやらswitchで分岐させるのか。

つーことは…?

メインとなるfunctionに行くときに、持って行って
ついでにSELECTかDELETEか、も一緒に持っていく、と。
で…良いよね?

public function mainAction($action, $table, $where = array()) {
    // 渡ってきた$whereを分解するごにょごにょ
    // 最終的に、
    // $sql文 = "$action FROM $table WHERE $where"
    // みたいな感じにする。
}
public function SELECT($table, $where) {
    $this->mainAction('SELECT *', $table, $where);
}
public function DELETE($table, $where) {
    $this->mainAction('DELETE', $table, $where);
}

感じで言えば、こんな感じだよね。…たぶん。
とりあえず、続きはあとで考える。

あとがき

問題は、"比較する場合" or "比較しない場合" を
どーすっかねー。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1