MySqlite.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. namespace app\admin\model;
  3. class MySqlite
  4. {
  5. private $mydb;
  6. protected $tablename;
  7. public function __construct()
  8. {
  9. $mydb = new \SQLite3(DB . DS . 'mysqlitedb.db');
  10. if (!$mydb) {
  11. throw new \Exception("$mydb->lastErrorMsg()", 1);
  12. } else {
  13. // echo "Opened database successfully\n";
  14. $this->mydb = $mydb;
  15. }
  16. }
  17. /**
  18. * 执行sql
  19. * @param string $sql
  20. * @return mixd $res
  21. */
  22. public function exec($sql)
  23. {
  24. @$res = $this->mydb->exec($sql);
  25. return $res;
  26. }
  27. public function query($sql)
  28. {
  29. $result = $this->mydb->query($sql);
  30. return $result;
  31. }
  32. public function lastInsertRowID()
  33. {
  34. $result = $this->mydb->lastInsertRowID();
  35. return $result;
  36. }
  37. public function lastErrorMsg()
  38. {
  39. return $this->mydb->lastErrorMsg();
  40. }
  41. /**
  42. * 查询数组列表
  43. */
  44. public function select($sql)
  45. {
  46. $result = $this->mydb->query($sql);
  47. $data = array();
  48. // var_dump($result);exit;
  49. while ($arr = $result->fetchArray(SQLITE3_ASSOC)) {
  50. $data[] = $arr;
  51. }
  52. return $data;
  53. }
  54. /**
  55. * 查询一条
  56. */
  57. public function getOneById($id, $tablename = '')
  58. {
  59. $tablename = $tablename ? $tablename : $this->tablename;
  60. $sql = "SELECT * FROM `$tablename` WHERE `id`=$id;";
  61. $result = $this->mydb->query($sql);
  62. // var_dump($result);
  63. $data = $result->fetchArray(SQLITE3_ASSOC);
  64. // var_dump($data);
  65. return $data;
  66. }
  67. /**
  68. * 分页结果
  69. */
  70. public function pageList($where, $page = 1, $limit = 10)
  71. {
  72. $res = $this->query("select count(*) as total from $this->tablename $where;");
  73. $data = $res->fetchArray(SQLITE3_ASSOC);
  74. $offset = ($page - 1) * $limit;
  75. $sql = "select * from $this->tablename $where limit $offset, $limit;";
  76. $list = $this->select($sql);
  77. $data['list'] = $list;
  78. $data['page'] = $page;
  79. $data['limit'] = $limit;
  80. return $data;
  81. }
  82. /**
  83. * 单列合计
  84. */
  85. public function sumColumn($column, $tablename)
  86. {
  87. $tablename = $tablename ? $tablename : $this->tablename;
  88. $sql = "SELECT sum(`$column`) as sumData FROM `$tablename`;";
  89. $result = $this->mydb->query($sql);
  90. // $data = $result->fetchArray();
  91. // var_dump($data['sumData']);exit;
  92. if ($data = $result->fetchArray(SQLITE3_ASSOC)) {
  93. return $data['sumData'];
  94. }
  95. return 0;
  96. }
  97. /**
  98. * 列表结果集
  99. */
  100. public function dataList($where = '')
  101. {
  102. $sql = "select * from $this->tablename $where;";
  103. return $this->select($sql);
  104. }
  105. public function listByName($name = '', $order = '', $desc = false)
  106. {
  107. $where = "";
  108. if ($name) {
  109. $where = " where name like '%$name%'";
  110. }
  111. if ($order) {
  112. $where .= " order by $order";
  113. if ($desc) {
  114. $where .= " desc";
  115. } else {
  116. $where .= " asc";
  117. }
  118. }
  119. $sql = "select * from $this->tablename $where;";
  120. $res = $this->select($sql);
  121. return $res;
  122. }
  123. /**
  124. * save
  125. */
  126. public function save($data)
  127. {
  128. $columns = "";
  129. $values = "";
  130. foreach ($data as $key => $value) {
  131. $columns .= "`" . $key . "`,";
  132. $values .= "'" . $value . "',";
  133. }
  134. $columns = rtrim($columns, ',');
  135. $values = rtrim($values, ',');
  136. $sql = "INSERT INTO `$this->tablename`(" . $columns . ") VALUES(". $values . ")";
  137. echo $sql . "<br />";
  138. return $this->exec($sql);
  139. }
  140. /**
  141. * updateById
  142. */
  143. public function updateById($data)
  144. {
  145. $id = $data['id'];
  146. unset($data['id']);
  147. $columns = "";
  148. foreach ($data as $key => $value) {
  149. $columns .= "`" . $key . "`='" . $value ."',";
  150. }
  151. $columns = rtrim($columns, ',');
  152. $sql = "UPDATE `$this->tablename` SET $columns WHERE `id`=$id";
  153. return $this->exec($sql);
  154. }
  155. /**
  156. * deleteByIds
  157. */
  158. public function deleteById($id)
  159. {
  160. $sql = "DELETE FROM `$this->tablename` WHERE `id` IN(";
  161. if (is_array($id)) {
  162. for ($i=0; $i < count($id); $i++) {
  163. $sql .= $id[$i] . ',';
  164. }
  165. $sql = rtrim($sql, ',');
  166. $sql .= ");";
  167. } else {
  168. $sql = "DELETE FROM `$this->tablename` WHERE `id`=$id;";
  169. }
  170. return $this->exec($sql);
  171. }
  172. public function __destruct()
  173. {
  174. $this->mydb->close();
  175. }
  176. }