S
S
Svyatoslav Nemato2015-06-29 10:19:00
PHP
Svyatoslav Nemato, 2015-06-29 10:19:00

We execute queries to MySQL on JSON, is such a bundle relevant?

//Версия пробная 1.0
class MYSQL{
  
  
  private $localhost = 'localhost'; //путь
  private $login = 'root'; //логин
  private $password = ''; //пароль
  private $dbname = 'dis'; //имя бд
  
  
  private $mysqli;
  
  
  public function __construct() {
    $this->mysqli = mysqli_connect($this->localhost, $this->login, $this->password, $this->dbname);
    if (mysqli_connect_errno($mysqli)) {
      echo "Ошибка, нет подключения к  MySQL: " . mysqli_connect_error();
    }
    $this->mysqli->set_charset("utf8");
  }
  
  
  private function type( $data, $type ){
    // Проверяем данные на тип int
    if (($type == 'int') and !is_int($data)) {
      return 'Ошибка. Значение '.$data.' не является числовым типом.'; 
    }
    // Проверяем данные на тип numeric
    if (($type == 'num') and !is_numeric($data)) {
      return 'Ошибка. Значение '.$data.' не является числовой строкой.';
    }
    // Проверяем данные на тип float
    if (($type == 'fl') and !is_float($data)) { 
      return 'Ошибка. Значение '.$data.' не является числом с плавающей точкой.'; 
    }
    // Проверяем данные на тип null
    if (($type == 'null') and !is_null($data)) { 
      return 'Ошибка. Значение '.$data.' не является типом NULL.'; 
    }
    // Проверяем данные на тип string
    if (($type == 'st') and !is_string($data)) { 
      return 'Ошибка. Значение '.$data.' не является строковым типом.'; 
    }
    //можно добавить еще кучу типов.
  }

  // Добавляем запись в базу данных, с помощью массива или json
  public function add( $data, $type = null ) {
    if ( $type == 'json') { $data = json_decode($data); }
    foreach( $data as $key => $val ) {
      if ($key !== 'table') {
        $name = explode(':', $key);
        if (!empty($name[1])) {
          $hash = $this->type($val, $name[1]);
          if ( $hash ) { 
            return $hash; 
          }
        }
        $names .= '`'.$this->mysqli->real_escape_string($name[0]).'`, ';
        $values .= '`'.$this->mysqli->real_escape_string($val).'`, ';
      } else {
        $table = mysql_escape_string($val);
      }
    }	
    $names = rtrim($names, ', ');
    $values = rtrim($values, ', ');
    $this->mysqli->query('INSERT INTO `'.$table.'`('.$names.') VALUES ('.$values.')');
  }
  
}

We fill in the data.
$array = array ( 'table'=>'list', 'id:null'=>NULL, 'data_id:int'=>1, 'data:str'=>'DATA' );

We connect the class.
$data = new MYSQL();
Let's see the result.
echo $data->add($array);
echo $data->add(json_encode($array), 'json');
echo $data->add('{"table":"list","id:null":null,"data_id:int":1,"data:str":"DATA"}', 'json');

I added only the add() method to the class , because I expect tolerant criticism from you so that I don’t repeat mistakes in the following methods.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
DevMan, 2015-06-29
@makklovskiy

mysqli and mysql_escape_string? o_O
WTF?
take any orm and use it, instead of creating a bike without a saddle.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question