SqliteModel.php 4.2 KB

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