-
- class HRDB{
- protected $pdo;
- protected $res;
- protected $config;
-
- /*constructor*/
- function __construct($config){
- $this->Config = $config
- ; $this->connect();
- }
-
- /*データベース接続*/
- public function connect(){
- $this->pdo = new PDO($this->Config['dsn'], $ this->Config['name'], $this->Config['password']);
- $this->pdo->query('set names utf8;');
- //結果を入れるstdClass にシリアル化します
- //$this->gt;pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
- //例外をキャッチする独自のコードを作成します
- $this->gt;pdo->setAttribute( PDO: :ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- }
-
- /*データベースクローズ*/
- public function close(){
- $this->pdo = null;
- }
-
- public function query($sql){
- $ res = $this->pdo->query($sql);
- if($res){
- $this->res = $res;
- }
- }
- public function exec($sql){
- $ res = $this->pdo->exec($sql);
- if($res){
- $this->res = $res;
- }
- }
- public function fetchAll(){
- return $this ->res->fetchAll();
- }
- public function fetch(){
- return $this->res->fetch();
- }
- public function fetchColumn(){
- return $this -> ;res->fetchColumn();
- }
- public function lastInsertId(){
- return $this->res->lastInsertId();
- }
-
- /**
- * パラメータの説明
- * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
- * 0 有効にしません
- * 1 有効にする
- * 2 プログラムを有効にして終了します
- * int $mode 戻り値の型
- * 0 複数のレコードを返します
- * 1 単一のレコードを返します
- * 2 行数を返します
- * 文字列/配列 $table データベーステーブル、2 つの値渡しモード
- * 通常モード:
- * 'tb_member, tb_money'
- * 配列モード:
- * array('tb_member', 'tb_money')
- * string/array $fields クエリ対象のデータベース フィールド。空にすることができます。デフォルトはすべてを検索します。2 つの値渡しモード
- * 通常モード:
- * 'ユーザー名、パスワード'
- * 配列モード:
- * array('username', 'password')
- * 文字列/配列 $sqlwhere クエリ条件、空許可、2 つの値渡しモード
- * 通常モード:
- * 'and type = 1 とユーザー名 like "%os%"'
- * 配列モード:
- * array('type = 1', 'username like "%os%"')
- * string $orderby ソート、デフォルトは ID 逆順です
- */
- public function select( $debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){
- //パラメータ処理
- if(is_array($table)){
- $ table = implode(', ', $table);
- }
- if(is_array($fields)){
- $fields = implode(', ', $fields);
- }
- if(is_array($sqlwhere)){
- $ sqlwhere = ' and '.implode(' and ', $sqlwhere);
- }
- //データベース操作
- if($debug === 0){
- if($mode === 2){
- $this -> ;query("select count(tbid) from $table where 1=1 $sqlwhere");
- $return = $this->fetchColumn();
- }else if($mode === 1){
- $this ->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
- $return = $this->fetch();
- }else{
- $this-> query( "select $fields from $table where 1=1 $sqlwhere order by $orderby");
- $return = $this->fetchAll();
- }
- return $return;
- }else{
- if($ mode = == 2){
- echo "select count(tbid) from $table where 1=1 $sqlwhere";
- }else if($mode === 1){
- echo "select $fields from $table where 1 =1 $sqlwhere order by $orderby";
- }
- else{
- echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
- }
- if($debug === 2){
- exit;
- }
- }
- }
-
- /* *
- * パラメータの説明
- * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
- * 0 有効にしません
- * 1 有効にする
- * 2 プログラムを有効にして終了します
- * int $mode 戻り値の型
- * 0 戻り情報なし
- * 1 実行エントリの数を返す
- * 2 最後に挿入されたレコードの ID を返す
- * string/array $table データベーステーブル、2 つの値渡しモード
- * 通常モード:
- * 'tb_member, tb_money '
- * 配列モード:
- * array( 'tb_member', 'tb_money')
- * string/array $set 挿入されるフィールドとコンテンツ、2 つの値渡しモード
- * 通常モード:
- * 'username = "test" , type = 1, dt = now() '
- * 配列モード:
- * array('username = "test"', 'type = 1', 'dt = now()')
- */
- public function insert($debug, $mode, $table, $set){
- //パラメータ处理
- if(is_array($table)){
- $table = implode(', ', $ table);
- }
- if(is_array($set)){
- $set = implode(', ', $set);
- }
- //データベース库操作
- if($debug === 0){
- if( $mode === 2){
- $this->query("$table set $set に挿入");
- $return = $this->lastInsertId();
- }else if($mode === 1){
- $this->exec("$table set $set に挿入");
- $return = $this->res;
- }else{
- $this->query("$table に挿入set $set");
- $return = NULL;
- }
- return $return;
- }else{
- echo "$table set $set に挿入";
- if($debug === 2){
- exit;
- }
- }
- }
-
- /**
- * パラメータの説明
- * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
- * 0 有効にしません
- * 1 有効にする
- * 2 プログラムを有効にして終了します
- * int $mode 戻り値の型
- * 0 戻り情報なし
- * 1 実行エントリの数を返します
- * string $table データベーステーブル、2 つの値渡しモード
- * 通常モード:
- * 'tb_member, tb_money'
- * 配列モード:
- * array('tb_member' , 'tb_money')
- * string/ array $set 更新する必要があるフィールドと内容、2 つの値渡しモード
- * 通常モード:
- * 'username = "test", type = 1, dt = now()'
- * 配列モード:
- * array('username = "test"', 'type = 1', 'dt = now()')
- * string/array $sqlwhere 条件を変更し、空の 2 つの値渡しモードを許可します
- * 通常モード:
- * 'および type = 1 および "%os%" のようなユーザー名'
- * 配列モード:
- * array('type = 1', '"%os%" のようなユーザー名')
- */
- public function update($debug, $mode, $table, $set, $sqlwhere=""){
- //パラメータ处理
- if(is_array($ table)){
- $table = implode(', ', $table);
- }
- if(is_array($set)){
- $set = implode(', ', $set);
- }
- if(is_array ($sqlwhere)){
- $sqlwhere = ' and '.implode(' and ', $sqlwhere);
- }
- //数据库操作
- if($debug === 0){
- if($mode === 1){
- $this->exec("update $table set $set where 1=1 $sqlwhere");
- $return = $this->res;
- }else{
- $this->query( "update $table set $set where 1=1 $sqlwhere");
- $return = NULL;
- }
- return $return;
- }else{
- echo "update $table set $set where 1=1 $sqlwhere";
- if($debug === 2){
- exit;
- }
- }
- }
-
- /**
- * パラメータの説明
- * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
- * 0 有効にしません
- * 1 有効にする
- * 2 プログラムを有効にして終了します
- * int $mode 戻り値の型
- * 0 戻り情報なし
- * 1 実行エントリの数を返す
- * string $table データベーステーブル
- * string/array $sqlwhere 削除条件、空にすることも可能、2 つの値渡しモード
- * 通常モード:
- * ' および型= 1 および "%os%" のようなユーザー名 '
- * 配列モード:
- * array('type = 1', '"%os%" のようなユーザー名')
- */
- public function delete($debug, $mode, $table, $sqlwhere=""){
- //パラメータ处理
- if(is_array($sqlwhere)){
- $sqlwhere = ' and '.implode(' and ', $ sqlwhere);
- }
- //データ库操作
- if($debug === 0){
- if($mode === 1){
- $this->exec("delete from $table where 1=1 $ sqlwhere");
- $return = $this->res;
- }else{
- $this->query("delete from $table where 1=1 $sqlwhere");
- $return = NULL;
- }
- return $return;
- }else{
- echo "$table where 1=1 $sqlwhere から削除";
- if($debug === 2){
- exit;
- }
- }
- }
- }
复制代
|