Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class mysql
- {
- /**
- * Object instance of PHP PDO
- * @var PDO
- */
- private $pdo;
- /**
- * Database host
- * @var string
- */
- private $host;
- /**
- * Database name
- * @var string
- */
- private $dbname;
- /**
- * Database username
- * @var string
- */
- private $username;
- /**
- * Database password
- * @var string
- */
- private $password;
- /**
- * Database tables prefix
- * @var string
- */
- private $table;
- /**
- * Save database informations
- *
- * @param string $host 127.0.0.1
- * @param string $dbname Database name
- * @param string $username Database username
- * @param string $password Database password
- */
- public function __construct($host, $dbname, $username, $password)
- {
- $this->host = $host;
- $this->dbname = $dbname;
- $this->username = $username;
- $this->password = $password;
- }
- /**
- * Return an instance of PDO
- *
- * @return PDO
- */
- public function getDB()
- {
- if ($this->pdo === null)
- {
- $this->pdo = new PDO('mysql:dbname=' . $this->dbname . ';host=' . $this->host . '', $this->username, $this->password, [
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
- ]);
- }
- return $this->pdo;
- }
- /**
- * Set a table name for database requests
- *
- * @param string $name
- */
- public function table($name)
- {
- $this->table = $name;
- return $this;
- }
- /**
- * Set a table prefix when we use function table()
- * @param string $prefix
- */
- public function setTablePrefix($prefix)
- {
- $this->tablePrefix = $prefix;
- }
- /**
- * Insert data in database
- *
- * @param array $data - Possible data
- * Single insertion $data value :
- * ['value1', 'value2', 'value3', ... ]
- *
- * Multiple insertions $data value :
- * [ ['value1', 'value2', 'value3'], ['value4', 'value5', 'value6'], ... ]
- *
- * @return int rowCount - Return numbers of inserted rows of the request
- */
- public function insert($data)
- {
- $columns = $reqFilledValues = "";
- foreach ($this->getDB()->query('DESCRIBE ' . $this->tablePrefix . $this->table)->fetchAll(PDO::FETCH_ASSOC) as $i => $columnInfo)
- if ($columnInfo['Extra'] != "auto_increment" && $columnInfo['Default'] === NULL)
- {
- if ($columns != "")
- {
- $columns .= ", ";
- $reqFilledValues .= ", ";
- }
- $columns .= $columnInfo['Field'];
- $reqFilledValues .= "?";
- }
- $sql = 'INSERT INTO ' . $this->tablePrefix . $this->table . ' (' . $columns . ') VALUES (' . $reqFilledValues . ')';
- if (count($data) > 1 && is_array($data[0]))
- for ($i = 0; $i < count($data); $i++)
- $sql .= ', (' . $reqFilledValues . ')';
- $req = $this->getDB()->prepare($sql);
- for ($i = 1; $i < count($data[0]) + 1; $i++)
- $req->bindParam($i, $data[0][$i - 1]);
- if (count($data) > 1 && is_array($data[0]))
- for ($j = 0; $j < count($data); $j++)
- foreach ($data[$j] as $value)
- {
- $req->bindParam($i, $value);
- $i++;
- }
- $req->execute();
- return $req->rowCount();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement