DbConnectionAdapterSqlite.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Sqlite 预定义了类 SQLiteDatabase 本实现没有使用。
  4. * 这里使用的全部是过程函数。
  5. * 无论是函数还是类,本实现只支持sqlite的2.x系列版本。
  6. * php5.3新增扩展sqlite3用来支持3.x版本。
  7. * PDO则同时支持2.x和3.x版本。
  8. */
  9. class LtDbConnectionAdapterSqlite implements LtDbConnectionAdapter
  10. {
  11. public function connect($connConf)
  12. {
  13. if (isset($connConf['pconnect']) && true == $connConf['pconnect'])
  14. {
  15. $func = 'sqlite_popen';
  16. }
  17. else
  18. {
  19. $func = 'sqlite_open';
  20. }
  21. $connConf["host"] = rtrim($connConf["host"], '\\/') . DIRECTORY_SEPARATOR;
  22. if(!is_dir($connConf["host"]))
  23. {
  24. if(!@mkdir($connConf["host"], 0777, true))
  25. {
  26. trigger_error("Can not create {$connConf['host']}");
  27. }
  28. }
  29. $error = '';
  30. $connResource = $func($connConf["host"] . $connConf["dbname"], 0666, $error);
  31. if (!$connResource)
  32. {
  33. trigger_error($error, E_USER_ERROR);
  34. }
  35. else
  36. {
  37. return $connResource;
  38. }
  39. }
  40. public function exec($sql, $connResource)
  41. {
  42. if(empty($sql))
  43. {
  44. return 0;
  45. }
  46. sqlite_exec($connResource, $sql);
  47. // echo '<pre>';
  48. // print_r(debug_backtrace());
  49. // debug_print_backtrace();
  50. // echo '</pre>';
  51. // delete from table 结果为0,原因未知。
  52. // 使用 delete from table where 1 能返回正确结果
  53. return sqlite_changes($connResource);
  54. }
  55. public function query($sql, $connResource)
  56. {
  57. $result = sqlite_query($connResource, $sql, SQLITE_ASSOC);
  58. return sqlite_fetch_all($result, SQLITE_ASSOC);
  59. }
  60. public function lastInsertId($connResource)
  61. {
  62. return sqlite_last_insert_rowid($connResource);
  63. }
  64. public function escape($sql, $connResource)
  65. {
  66. return sqlite_escape_string($sql);
  67. }
  68. }