ホームページ > バックエンド開発 > PHPチュートリアル > PDOデータベース操作クラス

PDOデータベース操作クラス

WBOY
リリース: 2016-07-25 08:44:29
オリジナル
985 人が閲覧しました
  1. class HRDB{
  2. protected $pdo;
  3. protected $res;
  4. protected $config;
  5. /*constructor*/
  6. function __construct($config){
  7. $this->Config = $config
  8. ; $this->connect();
  9. }
  10. /*データベース接続*/
  11. public function connect(){
  12. $this->pdo = new PDO($this->Config['dsn'], $ this->Config['name'], $this->Config['password']);
  13. $this->pdo->query('set names utf8;');
  14. //結果を入れるstdClass にシリアル化します
  15. //$this->gt;pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
  16. //例外をキャッチする独自のコードを作成します
  17. $this->gt;pdo->setAttribute( PDO: :ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  18. }
  19. /*データベースクローズ*/
  20. public function close(){
  21. $this->pdo = null;
  22. }
  23. public function query($sql){
  24. $ res = $this->pdo->query($sql);
  25. if($res){
  26. $this->res = $res;
  27. }
  28. }
  29. public function exec($sql){
  30. $ res = $this->pdo->exec($sql);
  31. if($res){
  32. $this->res = $res;
  33. }
  34. }
  35. public function fetchAll(){
  36. return $this ->res->fetchAll();
  37. }
  38. public function fetch(){
  39. return $this->res->fetch();
  40. }
  41. public function fetchColumn(){
  42. return $this -> ;res->fetchColumn();
  43. }
  44. public function lastInsertId(){
  45. return $this->res->lastInsertId();
  46. }
  47. /**
  48. * パラメータの説明
  49. * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
  50. * 0 有効にしません
  51. * 1 有効にする
  52. * 2 プログラムを有効にして終了します
  53. * int $mode 戻り値の型
  54. * 0 複数のレコードを返します
  55. * 1 単一のレコードを返します
  56. * 2 行数を返します
  57. * 文字列/配列 $table データベーステーブル、2 つの値渡しモード
  58. * 通常モード:
  59. * 'tb_member, tb_money'
  60. * 配列モード:
  61. * array('tb_member', 'tb_money')
  62. * string/array $fields クエリ対象のデータベース フィールド。空にすることができます。デフォルトはすべてを検索します。2 つの値渡しモード
  63. * 通常モード:
  64. * 'ユーザー名、パスワード'
  65. * 配列モード:
  66. * array('username', 'password')
  67. * 文字列/配列 $sqlwhere クエリ条件、空許可、2 つの値渡しモード
  68. * 通常モード:
  69. * 'and type = 1 とユーザー名 like "%os%"'
  70. * 配列モード:
  71. * array('type = 1', 'username like "%os%"')
  72. * string $orderby ソート、デフォルトは ID 逆順です
  73. */
  74. public function select( $debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){
  75. //パラメータ処理
  76. if(is_array($table)){
  77. $ table = implode(', ', $table);
  78. }
  79. if(is_array($fields)){
  80. $fields = implode(', ', $fields);
  81. }
  82. if(is_array($sqlwhere)){
  83. $ sqlwhere = ' and '.implode(' and ', $sqlwhere);
  84. }
  85. //データベース操作
  86. if($debug === 0){
  87. if($mode === 2){
  88. $this -> ;query("select count(tbid) from $table where 1=1 $sqlwhere");
  89. $return = $this->fetchColumn();
  90. }else if($mode === 1){
  91. $this ->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
  92. $return = $this->fetch();
  93. }else{
  94. $this-> query( "select $fields from $table where 1=1 $sqlwhere order by $orderby");
  95. $return = $this->fetchAll();
  96. }
  97. return $return;
  98. }else{
  99. if($ mode = == 2){
  100. echo "select count(tbid) from $table where 1=1 $sqlwhere";
  101. }else if($mode === 1){
  102. echo "select $fields from $table where 1 =1 $sqlwhere order by $orderby";
  103. }
  104. else{
  105. echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
  106. }
  107. if($debug === 2){
  108. exit;
  109. }
  110. }
  111. }
  112. /* *
  113. * パラメータの説明
  114. * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
  115. * 0 有効にしません
  116. * 1 有効にする
  117. * 2 プログラムを有効にして終了します
  118. * int $mode 戻り値の型
  119. * 0 戻り情報なし
  120. * 1 実行エントリの数を返す
  121. * 2 最後に挿入されたレコードの ID を返す
  122. * string/array $table データベーステーブル、2 つの値渡しモード
  123. * 通常モード:
  124. * 'tb_member, tb_money '
  125. * 配列モード:
  126. * array( 'tb_member', 'tb_money')
  127. * string/array $set 挿入されるフィールドとコンテンツ、2 つの値渡しモード
  128. * 通常モード:
  129. * 'username = "test" , type = 1, dt = now() '
  130. * 配列モード:
  131. * array('username = "test"', 'type = 1', 'dt = now()')
  132. */
  133. public function insert($debug, $mode, $table, $set){
  134. //パラメータ处理
  135. if(is_array($table)){
  136. $table = implode(', ', $ table);
  137. }
  138. if(is_array($set)){
  139. $set = implode(', ', $set);
  140. }
  141. //データベース库操作
  142. if($debug === 0){
  143. if( $mode === 2){
  144. $this->query("$table set $set に挿入");
  145. $return = $this->lastInsertId();
  146. }else if($mode === 1){
  147. $this->exec("$table set $set に挿入");
  148. $return = $this->res;
  149. }else{
  150. $this->query("$table に挿入set $set");
  151. $return = NULL;
  152. }
  153. return $return;
  154. }else{
  155. echo "$table set $set に挿入";
  156. if($debug === 2){
  157. exit;
  158. }
  159. }
  160. }
  161. /**
  162. * パラメータの説明
  163. * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
  164. * 0 有効にしません
  165. * 1 有効にする
  166. * 2 プログラムを有効にして終了します
  167. * int $mode 戻り値の型
  168. * 0 戻り情報なし
  169. * 1 実行エントリの数を返します
  170. * string $table データベーステーブル、2 つの値渡しモード
  171. * 通常モード:
  172. * 'tb_member, tb_money'
  173. * 配列モード:
  174. * array('tb_member' , 'tb_money')
  175. * string/ array $set 更新する必要があるフィールドと内容、2 つの値渡しモード
  176. * 通常モード:
  177. * 'username = "test", type = 1, dt = now()'
  178. * 配列モード:
  179. * array('username = "test"', 'type = 1', 'dt = now()')
  180. * string/array $sqlwhere 条件を変更し、空の 2 つの値渡しモードを許可します
  181. * 通常モード:
  182. * 'および type = 1 および "%os%" のようなユーザー名'
  183. * 配列モード:
  184. * array('type = 1', '"%os%" のようなユーザー名')
  185. */
  186. public function update($debug, $mode, $table, $set, $sqlwhere=""){
  187. //パラメータ处理
  188. if(is_array($ table)){
  189. $table = implode(', ', $table);
  190. }
  191. if(is_array($set)){
  192. $set = implode(', ', $set);
  193. }
  194. if(is_array ($sqlwhere)){
  195. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  196. }
  197. //数据库操作
  198. if($debug === 0){
  199. if($mode === 1){
  200. $this->exec("update $table set $set where 1=1 $sqlwhere");
  201. $return = $this->res;
  202. }else{
  203. $this->query( "update $table set $set where 1=1 $sqlwhere");
  204. $return = NULL;
  205. }
  206. return $return;
  207. }else{
  208. echo "update $table set $set where 1=1 $sqlwhere";
  209. if($debug === 2){
  210. exit;
  211. }
  212. }
  213. }
  214. /**
  215. * パラメータの説明
  216. * int $debug デバッグを有効にするかどうか、有効にするとSQL文が出力されます
  217. * 0 有効にしません
  218. * 1 有効にする
  219. * 2 プログラムを有効にして終了します
  220. * int $mode 戻り値の型
  221. * 0 戻り情報なし
  222. * 1 実行エントリの数を返す
  223. * string $table データベーステーブル
  224. * string/array $sqlwhere 削除条件、空にすることも可能、2 つの値渡しモード
  225. * 通常モード:
  226. * ' および型= 1 および "%os%" のようなユーザー名 '
  227. * 配列モード:
  228. * array('type = 1', '"%os%" のようなユーザー名')
  229. */
  230. public function delete($debug, $mode, $table, $sqlwhere=""){
  231. //パラメータ处理
  232. if(is_array($sqlwhere)){
  233. $sqlwhere = ' and '.implode(' and ', $ sqlwhere);
  234. }
  235. //データ库操作
  236. if($debug === 0){
  237. if($mode === 1){
  238. $this->exec("delete from $table where 1=1 $ sqlwhere");
  239. $return = $this->res;
  240. }else{
  241. $this->query("delete from $table where 1=1 $sqlwhere");
  242. $return = NULL;
  243. }
  244. return $return;
  245. }else{
  246. echo "$table where 1=1 $sqlwhere から削除";
  247. if($debug === 2){
  248. exit;
  249. }
  250. }
  251. }
  252. }
复制代

PDO


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート