Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.54 KB | None | 0 0
  1. <?php
  2.    
  3. class DB
  4. {
  5.  
  6.     protected
  7.         $PDO;
  8.  
  9.     //Соединение с бд
  10.     public function __construct($db_arr)
  11.     {
  12.  
  13.         $db_host = $db_arr['db_host'];
  14.         $db_name = $db_arr['db_name'];
  15.         $db_user = $db_arr['db_user'];
  16.         $db_password = $db_arr['db_password'];
  17.  
  18.         $dsn = "mysql:host=$db_host;dbname=$db_name;charset=utf8";
  19.         $opt = array(
  20.             PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  21.             PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  22.             PDO::ATTR_PERSISTENT         => true,
  23.             PDO::ATTR_EMULATE_PREPARES   => true
  24.         );
  25.         $this->PDO = new PDO($dsn, $db_user, $db_password, $opt);
  26.  
  27.     }
  28.  
  29.     //Функция обычноого запроса, если есть селект
  30.     //то в $fetch заносим true, тобы выелся результат
  31.     public function query($query)
  32.     {
  33.         $stmt = $this->PDO-query( $query );
  34.         return $stmt;
  35.     }
  36.  
  37.     public function select( $select = false, $from, $where = false, $like = false, $limit = false )
  38.     {
  39.  
  40.         $query = "SELECT ";
  41.  
  42.         //Разберемся с параметром селект
  43.         //Если предали не ложь, тогда будут знаечния, а не *
  44.         if ( $select !== false )
  45.         {
  46.             //Если массив, то будет несколько значений
  47.             if ( is_array($select) )
  48.             {
  49.                 for ( $i = 0; $i < count($select); $i++ )
  50.                 {
  51.                     if ( $i == (count($select) - 1) )
  52.                         $query .= "$select[$i] ";
  53.                     else
  54.                         $query .= "$select[$i], ";
  55.                 }
  56.             }
  57.             //Если перменная, то одно значение
  58.             else
  59.             {
  60.                 $query .= "$select ";
  61.             }
  62.         }
  63.         else
  64.         {
  65.             $query .= "* ";
  66.         }
  67.  
  68.         //Разберемся с параметром from
  69.         if ( $from !== false )
  70.         {  
  71.             $query .= "FROM ";
  72.             //Если массив, то будет несколько значений
  73.             if ( is_array($from) )
  74.             {
  75.                 for ( $i = 0; $i < count($from); $i++ )
  76.                 {
  77.                     if ( $i == (count($from) - 1) )
  78.                         $query .= "$from[$i] ";
  79.                     else
  80.                         $query .= "$from[$i], ";
  81.                 }
  82.             }
  83.             //Если перменная, то одно значение
  84.             else
  85.             {
  86.                 $query .= "$from ";
  87.             }
  88.         }
  89.         else
  90.         {
  91.             return false;
  92.         }
  93.  
  94.         //А теперь и с where
  95.         //И начнем с prepare
  96.  
  97.         if ( $where !== false )
  98.         {
  99.             $query .= "WHERE ";
  100.             foreach ($where as $key => $value)
  101.             {
  102.                 //Если это последний жлменет массива, тогда не пишем AND
  103.                 if ( next($where) === false )
  104.                     $query .= "$key = :$key ";
  105.                 else
  106.                     $query .= "$key = :$key AND ";
  107.             }
  108.         }
  109.  
  110.         //Теперь like
  111.  
  112.         if ( $like !== false )
  113.         {
  114.             $query .= "AND ";
  115.             foreach ($like as $key => $value)
  116.             {
  117.                 //Если это последний жлменет массива, тогда не пишем AND
  118.                 if ( next($like) === false )
  119.                     $query .= "$key LIKE :$key ";
  120.                 else
  121.                     $query .= "$key LIKE :$key AND ";
  122.             }
  123.         }
  124.  
  125.         //И про limit не забудем
  126.  
  127.         if ( $limit !== false )
  128.         {
  129.  
  130.             $query .= "LIMIT ";
  131.             if ( is_array($limit) )
  132.                 $query .= ":LIMIT1, :LIMIT2";
  133.             else
  134.                 $query .= ":LIMIT";
  135.         }
  136.  
  137.         $stmt = $this->PDO->prepare($query);
  138.  
  139.         //execute
  140.         //Начнем с where
  141.         foreach ($where as $key => $value)
  142.         {
  143.             switch($where[$key][1])
  144.             {
  145.  
  146.                 case 'int':
  147.                     $stmt->bindParam(":$key", $where[$key][0], PDO::PARAM_INT);
  148.                     break;
  149.  
  150.                 case 'str':
  151.                     $stmt->bindParam(":$key", $where[$key][0], PDO::PARAM_STR);
  152.                     break;
  153.  
  154.                 case 'bool':
  155.                     $stmt->bindParam(":$key", $where[$key][0], PDO::PARAM_BOOL);
  156.                     break;
  157.  
  158.                 default:
  159.                     $stmt->bindParam(":$key", $where[$key][0], PDO::PARAM_STR);
  160.                     break;
  161.  
  162.             }
  163.         }
  164.  
  165.         //Теперь like
  166.  
  167.         if ( $like !== false )
  168.         {
  169.             foreach ($like as $key => $value)
  170.                 $stmt->bindValue(":$key", "%$like[$key]%");
  171.  
  172.         }
  173.  
  174.         //limit
  175.  
  176.         if ( $limit !== false )
  177.         {
  178.             if ( is_array( $limit ) )
  179.             {
  180.                 for ( $i = 0; $i < count($limit); $i++ )
  181.                 {
  182.                     $a = $i + 1;
  183.                     $stmt->bindParam( ":LIMIT$a", $limit[$i], PDO::PARAM_INT);
  184.                 }
  185.             }
  186.             else
  187.                 $stmt->bindParam( ":LIMIT", $limit, PDO::PARAM_INT);
  188.         }
  189.  
  190.         $stmt->execute();
  191.         $data = $stmt->fetchAll();
  192.  
  193.         return $data;
  194.  
  195.     }
  196.  
  197.     public function insert($table, $data)
  198.     {
  199.  
  200.         //Формируем prepare запрос
  201.         $query = "INSERT INTO $table (";
  202.  
  203.         foreach ($data as $key => $value)
  204.         {
  205.             if ( next($data) === false )
  206.                 $query .= "$key) ";
  207.             else
  208.                 $query .= "$key, ";
  209.         }
  210.  
  211.         $query .= "VALUES (";
  212.  
  213.         foreach ($data as $key => $value)
  214.         {
  215.             if ( next($data) === false )
  216.                 $query .= ":$key)";
  217.             else
  218.                 $query .= ":$key, ";
  219.         }
  220.  
  221.         $stmt = $this->PDO->prepare($query);
  222.  
  223.         //формируем execute
  224.         foreach ($data as $key => $value)
  225.         {
  226.             switch($data[$key][1])
  227.             {
  228.  
  229.                 case 'int':
  230.                     $stmt->bindParam(":$key", $data[$key][0], PDO::PARAM_INT);
  231.                     break;
  232.  
  233.                 case 'str':
  234.                     $stmt->bindParam(":$key", $data[$key][0], PDO::PARAM_STR);
  235.                     break;
  236.  
  237.                 case 'bool':
  238.                     $stmt->bindParam(":$key", $data[$key][0], PDO::PARAM_BOOL);
  239.                     break;
  240.  
  241.                 default:
  242.                     $stmt->bindParam(":$key", $data[$key][0], PDO::PARAM_STR);
  243.                     break;
  244.  
  245.             }
  246.         }
  247.  
  248.         $insert = $stmt->execute();
  249.  
  250.         if ( $insert )
  251.             return $this->PDO->lastInsertId();
  252.         else
  253.             return $insert;
  254.  
  255.     }
  256.  
  257.     public function update($table, $data, $where = false)
  258.     {
  259.  
  260.         $query = "UPDATE $table SET ";
  261.  
  262.         foreach ($data as $key => $value) {
  263.             if ( next($data) == false )
  264.                 $query .= "$key = :$key ";
  265.             else
  266.                 $query .= "$key = :$key, "
  267.         }
  268.  
  269.     }
  270.  
  271.  
  272.  
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement