СоХабр закрыт.
С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.
$sql = "SELECT * FROM `table` WHERE `id` = '1'";
$st = $DB->query($sql);
$st>setFetchMode(PDO::FETCH_OBJ);
$list = $st>fetch(PDO::FETCH_ASSOC);
$sql = "INSERT INTO `users` (`email`, `password`, `registration`, `userkod`) VALUES (:email, :password, :registration, :userkod)";
$st = $DB->prepare($sql);
$st->bindValue(":email", $email, PDO::PARAM_STR);
$st->bindValue(":password", $insert_passwrd, PDO::PARAM_STR);
$st->bindValue(":registration", $data, PDO::PARAM_STR);
$st->bindValue(":userkod", $userkod, PDO::PARAM_STR);
$st->execute();
class DB {
}
/*
* $sql - это запрос к базе
* $fetch - тип получения результата из базы
*/
function select($sql, $fetch=””){
//в файле index мы подключемся к БД (можно реализовать несколькими путями, я же создал глобальную переменую)
global $DB;
$st = $DB->query($sql);
$st->setFetchMode(PDO::FETCH_OBJ);
if($fetch == '' || $fetch == 'row'){
//Возвращает строку
$fetch_fn = 'fetch';
}elseif($fetch == 'all' || $fetch == 'fetchAll'){
//Возвращает массив
$fetch_fn = 'fetchAll';
}else{
//вернет ошибку с указанием на неправильный параметр
return 'error $fetch';
}
//выполняем запрос и возвращаем ответ, за одно решил возвращать и количество строк
return array('return'=>$st->$fetch_fn(PDO::FETCH_ASSOC), 'count'=>$st->rowCount());
}
/*
* $sql - это запрос к базе
* $fetch - массив данных где ключами являются колонки в записываемой таблице
*/
function insert($sql, array $data) {
//в файле index мы подключаемся к БД (можно реализовать несколькими путями, я же создал глобальную переменную)
global $DB;
//Проверяем на присутствие всех данных
if(empty($sql) || empty($data)){
return false;
}
//Создаем два массива с ключами в разном формате
foreach ($data as $key => $value) {
$set1[] = "`$key`";
$set2[] = ":$key";
}
//Переводим массивы в строку
$set1_str = implode(', ', $set1);
$set2_str = implode(', ', $set2);
//Две строки сливаем в элемент запроса
$set_str = '('.$set1_str.') VALUES ('.$set2_str.')';
//заменяем псевдопеременную ?set в запросе на созданный элемент
$sql = preg_replace("#\?set#is", $set_str, $sql);
$st = $DB->prepare($sql);
//Создаем bindValue по ключам и значениям
foreach ($data as $key => $value) {
$st->bindValue(":$key", $value);
}
//выполняем запрос и возвращаем ответ
return array('return'=>$st->execute(), 'id'=>$DB->lastInsertId());
}
$coll["name"] = $_POST[name];
$coll["email"] = $_POST[email];
$coll["password"] = $_POST[password];
$coll["dateCreated"] = date("Y-m-d H:i:s");
$sql = "INSERT INTO `users` ?set";
$return = DB::insert($sql, $coll);
/*
* $sql - это запрос к базе
* $fetch - массив данных где ключами являются колонки в обновляемой таблице
*/
function update($sql, array $data) {
//в файле index мы подключаемся к БД (можно реализовать несколькими путями, я же создал глобальную переменную)
global $DB;
//Проверяем на присутствие всех данных
if(empty($sql) || empty($data)){
return false;
}
//создаем массив с элементами ключей
foreach ($data as $key => $value) {
$set[] = "`$key`=:$key";
}
//переводим массив в строку
$set_str = implode(', ', $set);
//заменяем псевдопеременную ?set в запросе на созданный элемент
$sql = preg_replace("#\?set#is", $set_str, $sql);
$st = $DB->prepare($sql);
//Создаем bindValue по ключам и значениям
foreach ($data as $key => $value) {
$st->bindValue(":$key", $value);
}
//выполняем запрос и возвращаем ответ
return array('return'=>$st->execute());
}
комментарии (44)