youtube_com_chevichelov
@youtube_com_chevichelov

Выполняем запросы к MySQL на JSON, актуальна ли такая связка?

//Версия пробная 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.')');
	}
	
}


Заполняем данные.

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


Подключаем класс.

$data = new MYSQL();

Смотрим результат.

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');


Добавил в класс только метод add(), так как жду от вас толерантной критики, что бы в следующих методах уже не повторять ошибок.
  • Вопрос задан
  • 771 просмотр
Решения вопроса 1
DevMan
@DevMan
mysqli и mysql_escape_string? о_O
WTF?

возьмите себе любую orm и пользуйтесь, вместо создания велосипеда без седла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы