Advertisement
Guest User

Untitled

a guest
Jan 14th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. <?php
  2. class mysql
  3. {
  4. /**
  5. * Object instance of PHP PDO
  6. * @var PDO
  7. */
  8. private $pdo;
  9.  
  10. /**
  11. * Database host
  12. * @var string
  13. */
  14. private $host;
  15.  
  16. /**
  17. * Database name
  18. * @var string
  19. */
  20. private $dbname;
  21.  
  22. /**
  23. * Database username
  24. * @var string
  25. */
  26. private $username;
  27.  
  28. /**
  29. * Database password
  30. * @var string
  31. */
  32. private $password;
  33.  
  34. /**
  35. * Database tables prefix
  36. * @var string
  37. */
  38. private $table;
  39.  
  40. /**
  41. * Save database informations
  42. *
  43. * @param string $host 127.0.0.1
  44. * @param string $dbname Database name
  45. * @param string $username Database username
  46. * @param string $password Database password
  47. */
  48. public function __construct($host, $dbname, $username, $password)
  49. {
  50. $this->host = $host;
  51. $this->dbname = $dbname;
  52. $this->username = $username;
  53. $this->password = $password;
  54. }
  55.  
  56. /**
  57. * Return an instance of PDO
  58. *
  59. * @return PDO
  60. */
  61. public function getDB()
  62. {
  63. if ($this->pdo === null)
  64. {
  65. $this->pdo = new PDO('mysql:dbname=' . $this->dbname . ';host=' . $this->host . '', $this->username, $this->password, [
  66. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  67. PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  68. ]);
  69. }
  70.  
  71. return $this->pdo;
  72. }
  73.  
  74. /**
  75. * Set a table name for database requests
  76. *
  77. * @param string $name
  78. */
  79. public function table($name)
  80. {
  81. $this->table = $name;
  82. return $this;
  83. }
  84.  
  85. /**
  86. * Set a table prefix when we use function table()
  87. * @param string $prefix
  88. */
  89. public function setTablePrefix($prefix)
  90. {
  91. $this->tablePrefix = $prefix;
  92. }
  93.  
  94. /**
  95. * Insert data in database
  96. *
  97. * @param array $data - Possible data
  98. * Single insertion $data value :
  99. * ['value1', 'value2', 'value3', ... ]
  100. *
  101. * Multiple insertions $data value :
  102. * [ ['value1', 'value2', 'value3'], ['value4', 'value5', 'value6'], ... ]
  103. *
  104. * @return int rowCount - Return numbers of inserted rows of the request
  105. */
  106. public function insert($data)
  107. {
  108. $columns = $reqFilledValues = "";
  109. foreach ($this->getDB()->query('DESCRIBE ' . $this->tablePrefix . $this->table)->fetchAll(PDO::FETCH_ASSOC) as $i => $columnInfo)
  110. if ($columnInfo['Extra'] != "auto_increment" && $columnInfo['Default'] === NULL)
  111. {
  112. if ($columns != "")
  113. {
  114. $columns .= ", ";
  115. $reqFilledValues .= ", ";
  116. }
  117. $columns .= $columnInfo['Field'];
  118. $reqFilledValues .= "?";
  119. }
  120.  
  121. $sql = 'INSERT INTO ' . $this->tablePrefix . $this->table . ' (' . $columns . ') VALUES (' . $reqFilledValues . ')';
  122.  
  123. if (count($data) > 1 && is_array($data[0]))
  124. for ($i = 0; $i < count($data); $i++)
  125. $sql .= ', (' . $reqFilledValues . ')';
  126.  
  127. $req = $this->getDB()->prepare($sql);
  128.  
  129. for ($i = 1; $i < count($data[0]) + 1; $i++)
  130. $req->bindParam($i, $data[0][$i - 1]);
  131.  
  132. if (count($data) > 1 && is_array($data[0]))
  133. for ($j = 0; $j < count($data); $j++)
  134. foreach ($data[$j] as $value)
  135. {
  136. $req->bindParam($i, $value);
  137. $i++;
  138. }
  139.  
  140. $req->execute();
  141. return $req->rowCount();
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement