OdbcController.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. require_once(dirname(__FILE__) . '/CsvController.php');
  3. class OdbcController
  4. {
  5. /** @var PDO */
  6. private $dbh;
  7. /** @var PDOStatement */
  8. private $qh;
  9. private $exception;
  10. public function __construct ($dsn)
  11. {
  12. try {
  13. $this->dbh = new PDO($dsn);
  14. } catch (PDOException $e) {
  15. $this->exception = $e;
  16. }
  17. }
  18. public function isConnected ()
  19. {
  20. return ($this->dbh instanceof PDO);
  21. }
  22. public function getLastException ()
  23. {
  24. return $this->exception;
  25. }
  26. public function executeAndConvertToCsv ($queryString)
  27. {
  28. $csvCtrl = new CsvController();
  29. $this->executeAndImport($queryString, array($csvCtrl, "encodeRow"));
  30. return $csvCtrl->exportToString();
  31. }
  32. public function executeAndImport($queryString, $callback)
  33. {
  34. $this->query($queryString);
  35. return $this->import($callback);
  36. }
  37. public function query ($queryString)
  38. {
  39. if (!$this->dbh) return false;
  40. try {
  41. $this->qh = $this->dbh->query($queryString);
  42. } catch (PDOException $e) {
  43. $this->exception = $e;
  44. return false;
  45. }
  46. return true;
  47. }
  48. public function fetchAll ()
  49. {
  50. if (!$this->qh) return array();
  51. return $this->qh->fetchAll(PDO::FETCH_NUM);
  52. }
  53. public function import ($callback)
  54. {
  55. if (!$this->qh) return false;
  56. $i = 0;
  57. while ($row = $this->qh->fetch(PDO::FETCH_ASSOC)) {
  58. call_user_func($callback, $row);
  59. $i++;
  60. }
  61. return $i;
  62. }
  63. }