首頁 > 後端開發 > php教程 > PHP基於單例模式實作的mysql類

PHP基於單例模式實作的mysql類

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-07-29 09:07:12
原創
1074 人瀏覽過

本文實例講述了PHP基於單例模式實現的mysql類別。分享給大家供大家參考,具體如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

<&#63;php

defined('ACC')||exit('Access Denied');

// 封装mysql操作类,包括连接功能,及查询功能.

class mysql extends absdb{

  protected static $ins = null;

  protected $host; // 主机名

  protected $user; // 用户名

  protected $passwd; // 密码

  protected $db;   // 数据库名

  protected $port// 端口

  protected $conn = null;

  // 在内部操作,获得一个对象

  public static function getIns() {

    if(self::$ins === null) {

      self::$ins = new self();

    }

    $conf = conf::getIns();

    self::$ins->host = $conf->host;

    self::$ins->user = $conf->user;

    self::$ins->passwd = $conf->pwd;

    self::$ins->db = $conf->db;

    self::$ins->port = $conf->port;

    self::$ins->connect();

    self::$ins->select_db();

    self::$ins->setChar();

    return self::$ins;

  }

  // 不让外部做new操作,

  protected function __construct() {

  }

  // 连接数据库

  public function connect() {

    $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port);

    if(!$this->conn) {

      $error = new Exception('数据库连不上',9);

      throw $error;

    }

  }

  // 发送sql查询

  public function query($sql) {

    $rs = mysql_query($sql,$this->conn);

    if(!$rs) {

      log::write($sql);

    }

    return $rs;

  }

  // 封装一个getAll方法

  // 参数:$sql

  // 返回: array,false

  public function getAll($sql) {

    $rs = $this->query($sql);

    if(!$rs) {

      return false;

    }

    $list = array();

    while($row = mysql_fetch_assoc($rs)) {

      $list[] = $row;

    }

    return $list;

  }

  // 封装一个getRow方法

  // 参数:$sql

  // 返回: array,false

  public function getRow($sql) {

    $rs = $this->query($sql);

    if(!$rs) {

      return false;

    }

    return mysql_fetch_assoc($rs);

  }

  // 封装一个getOne方法,

  // 参数: $sql

  // 返回: int,str(单一的值)

  public function getOne($sql) {

    $rs = $this->query($sql);

    if(!$rs) {

      return false;

    }

    $tmp = mysql_fetch_row($rs);

    return $tmp[0];

  }

  // 封装一个afftect_rows()方法

  // 参数:无

  // 返回 int 受影响行数

  public function affected_rows() {

    return mysql_affected_rows($this->conn);

  }

  // 返回最新生成的auto_increment列的值

  public function last_id() {

    return mysql_insert_id($this->conn);

  }

  // 选库函数

  public function select_db() {

    $sql = 'use ' . $this->db;

    return $this->query($sql);

  }

  // 设置字符集的函数

  public function setChar() {

    $sql = 'set names utf8';

    return $this->query($sql);

  }

  // 自动生成insert语句,update语句并执行

  public function autoExecute($data,$table,$act='insert',$where='') {

    if($act == 'insert') {

      $sql = 'insert into ' . $table . ' (';

      $sql .= implode(',',(array_keys($data)));

      $sql .= ') values (\'';

      $sql .= implode("','",array_values($data));

      $sql .= "')";

    } else if($act == 'update') {

      if(!trim($where)) {

        return false;

      }

      $sql = 'update ' . $table . ' set ';

      foreach($data as $k=>$v) {

        $sql .= $k;

        $sql .= '=';

        $sql .= "'".$v."',";

      }

      $sql = substr($sql,0,-1);

      $sql .= ' where ';

      $sql .= $where;

    } else {

      return false;

    }

    //return $sql;

    return $this->query($sql);

  }

}

登入後複製

更多關於PHP資料庫操作相關內容有興趣的讀者可查看本站專題:《php+mysql資料庫操作入門教學》、《PHP基於pdo操作資料庫技巧總結》及《php常見資料庫操作技巧總表》

希望本文所述對大家PHP程式設計有幫助。

以上就介紹了PHP基於單例模式實現的mysql類,包含了方面的內容,希望對PHP教程有興趣的朋友有幫助。

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板