ホームページ >バックエンド開発 >PHPチュートリアル >シングルトンパターンを使用してmysqlクラスを実装する

シングルトンパターンを使用してmysqlクラスを実装する

WBOY
WBOYオリジナル
2016-07-25 08:45:231039ブラウズ
mysql
  1. define('ACC')||exit('Access Denied');
  2. // 接続関数とクエリ関数を含む mysql 操作クラスをカプセル化します
  3. class mysql extends absdb{
  4. protected static $ins = null;
  5. protected $host; // ホスト名
  6. protected $user; // パスワード
  7. protected $db; // データベース名
  8. protected $port; protected $conn = null;
  9. // 内部操作、オブジェクトを取得します
  10. public static function getIns() {
  11. if(self::$ins === null) {
  12. self::$ins = new self() ;
  13. }
  14. $conf = conf::getIns();
  15. self::$ins->host = $conf->host;
  16. self::$ins->user = $conf->user; ::$ins->passwd = $conf->pwd;
  17. self::$ins->db = $conf->db;
  18. self::$ins->port = $conf->ポート;
  19. self::$ins->connect();
  20. self::$ins->select_db();
  21. self::$ins->setChar();
  22. return self::$ins ;
  23. }
  24. // 外部の新しい操作を許可しません。
  25. protected function __construct() {
  26. }
  27. // データベースに接続します
  28. public function connect() {
  29. $this->conn = @mysql_connect($this-> ;host,$this->user,$this->passwd,$this->port);
  30. if(!$this->conn) {
  31. $error = new Exception('データベースに接続できません' ,9);
  32. throw $error;
  33. }
  34. }
  35. // SQL クエリを送信します
  36. public function query($sql) {
  37. $rs = mysql_query($sql,$this->conn);
  38. if(! $ rs) {
  39. log::write($sql);
  40. }
  41. return $rs;
  42. }
  43. // getAll メソッドをカプセル化します
  44. // パラメータ: $sql
  45. // 戻り値: array,false
  46. public function getAll( $ sql) {
  47. $rs = $this->query($sql);
  48. if(!$rs) {
  49. return false;
  50. }
  51. $list = array();
  52. while($row = mysql_fetch_assoc($ rs )) {
  53. $list[] = $row;
  54. }
  55. return $list;
  56. }
  57. // getRow メソッドをカプセル化します
  58. // パラメータ: $sql
  59. // 戻り値: array,false
  60. public function getRow( $ sql) {
  61. $rs = $this->query($sql);
  62. if(!$rs) {
  63. return false;
  64. }
  65. return mysql_fetch_assoc($rs);
  66. }
  67. // getOne メソッドをカプセル化する,
  68. // パラメーター: $sql
  69. // 戻り値: int、str (単一値)
  70. public function getOne($sql) {
  71. $rs = $this->query($sql);
  72. if(!$rs ) {
  73. return false;
  74. }
  75. $tmp = mysql_fetch_row($rs);
  76. return $tmp[0];
  77. }
  78. // apply_rows() メソッドをカプセル化します
  79. // パラメータ: なし
  80. // 影響を受ける int を返します行数
  81. public function inspired_rows() {
  82. return mysql_affected_rows($this->conn);
  83. }
  84. // 最後に生成された auto_increment 列の値を返します
  85. public function last_id() {
  86. return mysql_insert_id($this->) ; conn);
  87. }
  88. // ライブラリ関数を選択します
  89. public function select_db() {
  90. $sql = 'use ' . $this->db;
  91. return $this->query($sql);
  92. }
  93. // 文字セットを設定する関数
  94. public function setChar() {
  95. $sql = 'set names utf8';
  96. return $this->query($sql);
  97. }
  98. // insert ステートメント、update ステートメント、およびそれらを実行します
  99. public function autoExecute($data,$table,$act='insert',$where='') {
  100. if($act == 'insert') {
  101. $sql = 'insert into ' $テーブル . ' (';
  102. $sql .= implode(',',(array_keys($data)));
  103. $sql .= ') 値 ('';
  104. $sql .= implode("', '",array_values ($data));
  105. $sql .= "')";
  106. } else if($act == 'update') {
  107. if(!trim($where)) {
  108. return false;
  109. }
  110. $ sql = 'update ' . $table . ' set ';
  111. foreach($data as $k=>$v) {
  112. $sql .= $k;
  113. $sql .= '=';
  114. $sql .= "'".$v."',";
  115. }
  116. $sql = substr($sql,0,-1);
  117. $sql .= ' where ';
  118. $sql .= $where ;
  119. } else {
  120. return false;
  121. }
  122. //return $sql;
  123. return $this->query($sql);
  124. }
  125. }
  126. コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。