SQLBuilder (постоитель запросов)

  1. class SQLBuilder {
  2.  
  3.     private $sql;
  4.  
  5.     private $table;
  6.  
  7.     private $fieldTypes = array(
  8.         'v' => 'varchar(255) NOT NULL',
  9.         'i' => 'int(11) NOT NULL',
  10.         't' => 'text NOT NULL'
  11.     );
  12.  
  13.     public function __construct($table) {
  14.         $this->table = $table; // set table
  15.     }
  16.  
  17.     public function getSQL() {
  18.         return $this->sql;
  19.     }
  20.  
  21.     public function getTable() {
  22.         return $this->table;
  23.     }
  24.  
  25.     public function type($key) {
  26.         return $this->fieldTypes[$key];
  27.     }
  28.  
  29.     public function createTable($args) {
  30.         $sql = array();
  31.  
  32.         $sql[] = 'CREATE TABLE IF NOT EXISTS `' . $this->getTable() . '` (
  33.                `id` int(11) NOT NULL AUTO_INCREMENT';
  34.  
  35.         foreach ($args as $name => $type) {
  36.             $sql[] = '`' . $name . '` ' . $this->type($type);
  37.         }
  38.  
  39.         $sql[] = 'PRIMARY KEY (`id`)
  40.                ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;';
  41.  
  42.         $this->sql = implode(', ', $sql); // join()
  43.  
  44.         return $this;
  45.     }
  46.  
  47.     public function delete($id) {
  48.         $this->sql = 'DELETE `' . $this->table . '` WHERE `id` = ' . intval($id);
  49.  
  50.         return $this;
  51.     }
  52.  
  53.     public function insert($values, $fields = false) {
  54.         $this->sql = "INSERT INTO `" . $this->table . "` " . ($fields ? "(`" . implode("`, `", $fields)  . "`)" : '') . " VALUES('" . implode("', '", $values) . "')";
  55.  
  56.         return $this;
  57.     }
  58.  
  59.     public function update($values, $id) {
  60.         $sql = array();
  61.         $parts = array();
  62.  
  63.         $this->sql = 'UPDATE `' . $this->table . '` SET ';
  64.  
  65.         foreach($values as $field => $value) {
  66.             $parts[] = "`" . $field . "` = '" . $value . "'";
  67.         }
  68.  
  69.         $sql[] = sizeof($parts) > 1 ? implode(', ', $parts) : $parts[0];
  70.  
  71.         $this->sql .= implode(', ', $sql);
  72.         $this->sql .= ' WHERE `id` = ' . intval($id);
  73.  
  74.         return $this;
  75.     }
  76.  
  77. }
функционал не весь, навелосипедил))
пример
  1. $obj = new SQLbuilder('users');
  2.  
  3. $args = array(
  4.     'name' => 'v',
  5.     'age' => 'i',
  6.     'text' => 't'
  7. );
  8.  
  9. echo 'CREATE -> ' .  $obj->createTable($args)->getSQL();
  10.  
  11. echo '<br />';
  12.  
  13. $fields = array('name', 'age');
  14. $values = array('vasya', 22);
  15.  
  16. echo 'INSERT with fields -> ' . $obj->insert($values, $fields)->getSQL();
  17.  
  18. echo '<br />';
  19.  
  20. $values2 = array(null, 'vasya', 22, 'test text');
  21.  
  22. echo 'INSERT without fields -> ' . $obj->insert($values2)->getSQL();
  23.  
  24. echo '<br />';
  25.  
  26. $id = 2;
  27.  
  28. $values = array('name' => 'Petya', 'age' => 23);
  29.  
  30. echo 'UPDATE -> ' . $obj->update($values, $id)->getSQL();

Реклама

Мы в соцсетях

tw tg yt gt