Guest User

Untitled

a guest
Mar 13th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. <?php
  2. class Db {
  3. private $host = 'localhost';
  4. private $db = 'exam';
  5. private $user = 'root';
  6. private $pass = 'root';
  7. private $charset = 'utf8';
  8. protected $pdo;
  9. function __construct() {
  10. try {
  11. $dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset";
  12. $opt = array(
  13. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  14. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  15. );
  16. $this->pdo = new PDO($dsn, $this->user, $this->pass, $opt);
  17. } catch(PDOException $e) {
  18. echo 'Не удалось подключиться к бд: ' . $e->getMessage();
  19. }
  20. return $this->pdo;
  21. }
  22. public function update($id, $arr) {
  23. try {
  24. $this->clearArr($arr);
  25. $sql = "UPDATE `users` SET " . $this->keyValueSet($arr, $values) . " WHERE `id` = ?";
  26. $values[] = $id;
  27. $smtp = $this->pdo->prepare($sql);
  28. $this->bindValue($smtp, $values);
  29. $smtp->execute();
  30. } catch(PDOException $e) {
  31. echo 'Не удалось обновить значение полей: ' . $e->getMessage();
  32. }
  33. }
  34. public function insert($arr) {
  35. try {
  36. $this->clearArr($arr);
  37. $sql = "INSERT INTO `users` SET " . $this->keyValueSet($arr, $values);
  38. $smtp = $this->pdo->prepare($sql);
  39. $this->bindValue($smtp, $values);
  40. if ($smtp->execute()) {
  41. return true;
  42. }
  43. else {
  44. return false;
  45. }
  46. } catch(PDOException $e) {
  47. echo 'Не удалось вставить данные в бд: ' . $e->getMessage();
  48. }
  49. }
  50. public function delete($id) {
  51. try {
  52. $this->clearString($id);
  53. $smtp = $this->pdo->prepare('DELETE FROM `users` WHERE `id` = ?');
  54. $smtp->bindValue(1, $id, PDO::PARAM_INT);
  55. $smtp->execute();
  56. } catch(PDOException $e) {
  57. echo 'Не удалось удалить строку из бд: ' . $e->getMessage();
  58. }
  59. }
  60. public function select($arr = null, $offset = null, $limit = null) {
  61. if ($arr) {
  62. $this->clearArr($arr);
  63. $strWhere = substr(str_repeat('?, ', count($arr)), 0, -2);
  64. $sql = "SELECT * FROM `users` WHERE " . $this->keyValueSet($arr, $values, true);
  65. } elseif (!isset($arr)) {
  66. $sql = "SELECT * FROM `users`";
  67. }
  68. if (isset($offset) && isset($limit)) {
  69. $sql .= " LIMIT ?, ?";
  70. $values[] = $offset;
  71. $values[] = $limit;
  72. }
  73. if (!isset($offset) && isset($limit)) {
  74. $sql .= " LIMIT ?";
  75. $values[] = $limit;
  76. }
  77. try {
  78. $smtp = $this->pdo->prepare($sql);
  79. $this->bindValue($smtp, $values);
  80. $smtp->execute();
  81. } catch(PDOException $e) {
  82. echo 'Ошибка при поиске данных: ' . $e->getMessage();
  83. }
  84.  
  85. while ($row = $smtp->fetch()) {
  86. $result[] = $row;
  87. }
  88.  
  89. return $result;
  90. }
  91. protected function bindValue(&$smtp, $values) {
  92. for ($i = 0; $i < count($values); $i++) {
  93. if (preg_match('/^[\d]*$/', $values[$i])) {
  94. $val = (int) $values[$i];
  95. $smtp->bindValue($i + 1, $val, PDO::PARAM_INT);
  96. } elseif (is_string($values[$i])) {
  97. $smtp->bindValue($i + 1, $values[$i], PDO::PARAM_STR);
  98. }
  99. }
  100. }
  101. protected function keyValueSet($keyVal, &$arrExecute, $string = false) {
  102. $result = '';
  103. foreach ($keyVal as $key => $val) {
  104. $result .= $string ? "`$key` = ? AND " : "`$key` = ?, ";
  105. $arrExecute[] = $val;
  106. }
  107. return $string ? substr($result, 0, -5) : substr($result, 0, -2);
  108. }
  109. protected function clearArr(&$arr) {
  110. $arr = array_map(function($el) {
  111. return strip_tags(trim($el));
  112. }, $arr);
  113. }
  114. protected function clearString(&$str) {
  115. $str = strip_tags(trim($str));
  116. }
  117.  
  118. }
Add Comment
Please, Sign In to add comment