Recently wrote a class to work with MySql.
Please see if there are any holes in this class (sql injection).
Each line is signed to understand the code.
<?php Class bd{ private $mysqli; public function connect($cfg){//Функция подключения ,при вызове передаём настройки с данными от бд $this->mysqli = new mysqli($cfg['bd']['host'], $cfg['bd']['user'], $cfg['bd']['password'], $cfg['bd']['name']);//подключение к бд $this->mysqli->query("SET NAMES 'utf8'");//установка кодировки $this->mysqli->set_charset("utf8");//установка кодировки } public function get($table,$columns='*',$filter=false){//функция для получения данных из бд ,при вызове передаём: название таблица, [название столбцов], [дополнительный sql фильтр] $filter = ($filter !== false)? ' WHERE '.$this->mysqli->real_escape_string($filter):'';//получаем данные из бд return $this->changeToArray($this->mysqli->query("SELECT $columns FROM `$table`".$filter));//преобразовываем их в двух мерный массив и возращяем } public function add($table,$data){//добавления данных в бд, при вызове передаём: названия таблицы, массив вида 'название столбца'=>'данные' $keys = '';//тут будут хранится название столбцов $values = '';//тут будут хранится вносимые данные foreach($data as $key=>$val) {//перебор входящего массива if(gettype($val) !== 'string' || gettype($val) !== '"integer"') $val = json_encode($val);//если переданые данные не явлиются ,не строкой и не числом преобразовываем их в json-данные $keys .= '`'.$this->mysqli->real_escape_string($key).'`, ';//добавляем новое название столбца if(gettype($val) === 'integer') $values .= $this->mysqli->real_escape_string($val).' , ';//добавляем новые данные else $values .= '\''.$this->mysqli->real_escape_string($val).'\', ';//добавляем новые данные } $keys = substr($keys, 0, -2);//обрезаем лишний пробел и запятую $values = substr($values, 0, -2);//обрезаем лишний пробел и запятую $this->mysqli->query("INSERT INTO `$table` ($keys) VALUES ($values)");//добалвяем данные в БД } public function edit($table,$filter,$data){//функция редактирования, при вызове передаём: названия таблицы,фильтр, массив вида 'название столбца'=>'данные' $sql_data = '';//тут будет хранится sql запрос foreach($data as $key=>$val) {//переберам данные if(gettype($val) !== 'string' || gettype($val) !== '"integer"') $val = json_encode($val);//если переданые данные не явлиются ,не строкой и не числом преобразовываем их в json-данные if(gettype($val) === 'integer') $sql_data = '`'.$this->mysqli->real_escape_string($key).'`='.$this->mysqli->real_escape_string($val).', ';//добавляем новые данный в sql запрос else $sql_data = '`'.$this->mysqli->real_escape_string($key).'`=\''.$this->mysqli->real_escape_string($val).'\', ';//добавляем новые данный в sql запрос } $sql_data = substr($sql_data, 0, -1);//обрезаем линюю запятую $this->mysqli->query("UPDATE `$table` SET $sql_data WHERE ".$filter);//обновляем данные в бд } public function delete($table,$filter=false){//функция удаления ,при вызове передаём: название таблицы, [фильтр] $filter = ($filter !== false)? ' WHERE '.$this->mysqli->real_escape_string($filter):'';//если фильтр равен false присваевам ему постое значение $this->mysqli->query("DELETE FROM `$table`".$filter);//удаляем данные из бд } private function changeToArray($result) {//внутреняя функция для преобразования sql данных в двухмерный массив if($result===false) return array(); $results = array(); while(($row = $result->fetch_assoc()) != false) $results[] = $row; return $results; } public function __destruct() {//функция закрытия соединения. $this->mysqli->close(); } } ?>
bdshould bedb=) "data base". Here, filled in on pastebin: pastebin.com/X5Dq7DFi - user26699#ооп#кэнтБэк#мартин#codingStandardsis to read - username