<?php
class handler{
/*
Параметры подключения к БД
*/
private $host="localhost";
private $user="dk";
private $database="data-control";
private $pass="12345";
private $charset="utf8";
private $db;
public $placeholders;
public $values;
public function conn() {
$this->db = new PDO("mysql:host=".$this->host.";dbname=".$this->database.";charset=".$this->charset, $this->user, $this->pass);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
// public function db_select($fields, $table, $fieldname=null, $id=null, $order=null)
// {
// $this->conn();
// if ($fields!="*") {
// $fields=implode($fields,",");
// }
// $sql = "SELECT $fields FROM `$table` ";
// if ($fieldname!=null and $id!=null) $sql.=" WHERE `$fieldname`=:id";
// if ($order!=null) $sql.=" ORDER BY :order";
// $stmt = $this->db->prepare($sql);
// if ($id!=null) $stmt->bindParam('id', $id);
// if ($order!=null) $stmt->bindParam(':order',$order);
// $stmt->execute();
// return $stmt->fetchAll(PDO::FETCH_CLASS,'person');
// $conn=null;
// }
public function db_select_short($fields, $table, $fieldname=null, $id=null, $order=null)
{
$this->conn();
if ($fields!="*") {
}
$sql = "SELECT $fields FROM `$table` ";
if ($fieldname!=null and $id!=null) $sql.=" WHERE `$fieldname`=:id";
if ($order!=null) $sql.=" ORDER BY :order";
$stmt = $this->db->prepare($sql);
if ($id!=null) $stmt->bindParam('id', $id);
if ($order!=null) $stmt->bindParam(':order',$order);
$stmt->execute();
while ($row=$stmt->fetch(PDO::FETCH_OBJ)) {
$persons[] = new person(
$surname=$row->surname,
$id=$row->id,
$country=$row->country,
$status=$row->display
);
}
return $persons;
$conn=null;
}
public function tab_columns ($table) {
$this->conn();
$sql="SELECT column_name, extra FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='$table'";
$stmt = $this->db->prepare($sql);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$columns = $stmt->fetchAll(PDO::FETCH_UNIQUE); //какая-то магия(
return $columns;
}
public function set_placeholders ($table,$data) {
$columns=$this->tab_columns($table);
$placeholders = '';
foreach ($allowed as $field) {
if (isset($data->$field)) { $placeholders.="`".str_replace("`","``",$field)."`". "=:$field, "; $values[$field] =$data->$field;
}
}
$placeholders= substr($placeholders, 0, -2);
$this->placeholders=$placeholders;
$this->values=$values;
$conn=null;
}
public function db_update($table, $data, $fieldname, $id)
{
$this->set_placeholders ($table,$data);
$sql = "UPDATE `$table` SET ".$this->placeholders." WHERE `$fieldname`=:id";
$stmt = $this->db->prepare($sql);
if ($id!=null) $stmt->bindParam('id', $id);
$stmt->execute($this->values);
return true;
$conn=null;
}
public function db_insert($table, $data)
{
$this->set_placeholders ($table,$data);
$sql = "INSERT INTO `$table` SET ".$this->placeholders;
$stmt = $this->db->prepare($sql);
$stmt->execute($this->values);
$lastId = $this->db->lastInsertId();
return $lastId;
$conn=null;
}
public function db_delete($table, $fieldname, $id)
{
$sql = "DELETE FROM `$table` WHERE `$fieldname`=:id";
$stmt = $this->db->prepare($sql);
if ($id!=null) $stmt->bindParam('id', $id);
$stmt->execute();
return true;
$conn=null;
}
public function data_print ($data) {
echo '<pre>';
echo '</pre>';
}
}
class person {
public $surname;
public $id;
public $country;
function __construct($surname,$id,$country,$display) {
$this->surname=$surname;
$this->id=$id;
$this->country=$country;
$this->status=$display;
}
}
?>
PD9waHAKCmNsYXNzIGhhbmRsZXJ7CgkvKiAKCdCf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LTQutC70Y7Rh9C10L3QuNGPINC6INCR0JQKCSAqLwoJcHJpdmF0ZSAkaG9zdD0ibG9jYWxob3N0IjsKIAlwcml2YXRlICR1c2VyPSJkayI7Cglwcml2YXRlICRkYXRhYmFzZT0iZGF0YS1jb250cm9sIjsKCXByaXZhdGUgJHBhc3M9IjEyMzQ1IjsKCXByaXZhdGUgJGNoYXJzZXQ9InV0ZjgiOwoJcHJpdmF0ZSAkZGI7CglwdWJsaWMgJHBsYWNlaG9sZGVyczsKCXB1YmxpYyAkdmFsdWVzOwoJCglwdWJsaWMgZnVuY3Rpb24gY29ubigpIHsKCSAJJHRoaXMtPmRiID0gbmV3IFBETygibXlzcWw6aG9zdD0iLiR0aGlzLT5ob3N0LiI7ZGJuYW1lPSIuJHRoaXMtPmRhdGFiYXNlLiI7Y2hhcnNldD0iLiR0aGlzLT5jaGFyc2V0LCAkdGhpcy0+dXNlciwgJHRoaXMtPnBhc3MpOwogICAgICAgICR0aGlzLT5kYi0+c2V0QXR0cmlidXRlKFBETzo6QVRUUl9FUlJNT0RFLCBQRE86OkVSUk1PREVfRVhDRVBUSU9OKTsKCX0KCgkvLyBwdWJsaWMgZnVuY3Rpb24gZGJfc2VsZWN0KCRmaWVsZHMsICR0YWJsZSwgJGZpZWxkbmFtZT1udWxsLCAkaWQ9bnVsbCwgJG9yZGVyPW51bGwpCiAvLyAgICAgICAgewogLy8gICAgICAgICAgICAkdGhpcy0+Y29ubigpOwogICAgICAgICAgICAJCiAvLyAgICAgICAgICAgIAlpZiAoJGZpZWxkcyE9IioiKSB7CiAvLyAgICAgICAgICAgIAkJJGZpZWxkcz1pbXBsb2RlKCRmaWVsZHMsIiwiKTsKIC8vICAgICAgICAgICAgCX0KCiAvLyAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUICRmaWVsZHMgRlJPTSBgJHRhYmxlYCAiOwogLy8gICAgICAgICAgICBpZiAoJGZpZWxkbmFtZSE9bnVsbCBhbmQgJGlkIT1udWxsKSAkc3FsLj0iIFdIRVJFIGAkZmllbGRuYW1lYD06aWQiOwogLy8gICAgICAgICAgICBpZiAoJG9yZGVyIT1udWxsKSAkc3FsLj0iIE9SREVSIEJZIDpvcmRlciI7CiAgICAgICAgICAgIAogLy8gICAgICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKIC8vICAgICAgICAgICAJaWYgKCRpZCE9bnVsbCkgJHN0bXQtPmJpbmRQYXJhbSgnaWQnLCAkaWQpOwogICAgICAgICAgIAogLy8gICAgICAgICAgCWlmICgkb3JkZXIhPW51bGwpICRzdG10LT5iaW5kUGFyYW0oJzpvcmRlcicsJG9yZGVyKTsKIC8vICAgICAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICAgICAKIC8vICAgICAgICAgICAJcmV0dXJuICRzdG10LT5mZXRjaEFsbChQRE86OkZFVENIX0NMQVNTLCdwZXJzb24nKTsKIC8vICAgIAkJJGNvbm49bnVsbDsKIC8vICAgIAl9CgoKICAgIAkJcHVibGljIGZ1bmN0aW9uIGRiX3NlbGVjdF9zaG9ydCgkZmllbGRzLCAkdGFibGUsICRmaWVsZG5hbWU9bnVsbCwgJGlkPW51bGwsICRvcmRlcj1udWxsKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPmNvbm4oKTsKICAgICAgICAgICAgCQogICAgICAgICAgICAJaWYgKCRmaWVsZHMhPSIqIikgewogICAgICAgICAgICAJCSRmaWVsZHM9aW1wbG9kZSgkZmllbGRzLCIsIik7CiAgICAgICAgICAgIAl9CgogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCAkZmllbGRzIEZST00gYCR0YWJsZWAgIjsKICAgICAgICAgICAgaWYgKCRmaWVsZG5hbWUhPW51bGwgYW5kICRpZCE9bnVsbCkgJHNxbC49IiBXSEVSRSBgJGZpZWxkbmFtZWA9OmlkIjsKICAgICAgICAgICAgaWYgKCRvcmRlciE9bnVsbCkgJHNxbC49IiBPUkRFUiBCWSA6b3JkZXIiOwogICAgICAgICAgICAKICAgICAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgICAgCWlmICgkaWQhPW51bGwpICRzdG10LT5iaW5kUGFyYW0oJ2lkJywgJGlkKTsKICAgICAgICAgICAKICAgICAgICAgIAlpZiAoJG9yZGVyIT1udWxsKSAkc3RtdC0+YmluZFBhcmFtKCc6b3JkZXInLCRvcmRlcik7CiAgICAgICAgICAgICRzdG10LT5leGVjdXRlKCk7CiAgICAgICAgICAgCQogICAgICAgICAgIAkkcGVyc29ucz1hcnJheSgpOwogICAgICAgICAgIAkKICAgICAgICAgICAJd2hpbGUgKCRyb3c9JHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfT0JKKSkgewogICAgICAgICAgIAkJJHBlcnNvbnNbXSA9IG5ldyBwZXJzb24oCgkgICAgICAgICAgIAkJCSRzdXJuYW1lPSRyb3ctPnN1cm5hbWUsCgkgICAgICAgICAgIAkJCSRpZD0kcm93LT5pZCwKCSAgICAgICAgICAgCQkJJGNvdW50cnk9JHJvdy0+Y291bnRyeSwKCSAgICAgICAgICAgCQkJJHN0YXR1cz0kcm93LT5kaXNwbGF5CiAgICAgICAgICAgCQkJKTsKICAgICAgICAgICAJfQoKICAgICAgICAgICAJcmV0dXJuICRwZXJzb25zOwogICAgCQkkY29ubj1udWxsOwogICAgCX0KCgkgICBwdWJsaWMgZnVuY3Rpb24gdGFiX2NvbHVtbnMgKCR0YWJsZSkgewoJCSR0aGlzLT5jb25uKCk7CgkJJHNxbD0iU0VMRUNUIGNvbHVtbl9uYW1lLCBleHRyYSBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5DT0xVTU5TIFdIRVJFIFRBQkxFX05BTUU9JyR0YWJsZSciOwoJCSRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwoJCSRzdG10LT5leGVjdXRlKCk7CgoJCSRzdG10LT5zZXRGZXRjaE1vZGUoUERPOjpGRVRDSF9BU1NPQyk7ICAKCQkkY29sdW1ucyA9ICRzdG10LT5mZXRjaEFsbChQRE86OkZFVENIX1VOSVFVRSk7IC8v0LrQsNC60LDRjy3RgtC+INC80LDQs9C40Y8oCgkJcmV0dXJuICRjb2x1bW5zOwoKCSAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcGxhY2Vob2xkZXJzICgkdGFibGUsJGRhdGEpIHsKCQkJJGNvbHVtbnM9JHRoaXMtPnRhYl9jb2x1bW5zKCR0YWJsZSk7CiAgICAgICAgICAgICRhbGxvd2VkPWFycmF5X2tleXMoJGNvbHVtbnMpOwogICAgICAgICAgICAkcGxhY2Vob2xkZXJzID0gJyc7CiAgCQkJJHZhbHVlcyA9IGFycmF5KCk7CgogIAkJCWZvcmVhY2ggKCRhbGxvd2VkIGFzICRmaWVsZCkgewoJCQkgICAgaWYgKGlzc2V0KCRkYXRhLT4kZmllbGQpKSB7CgkJCSAgICAgICRwbGFjZWhvbGRlcnMuPSJgIi5zdHJfcmVwbGFjZSgiYCIsImBgIiwkZmllbGQpLiJgIi4gIj06JGZpZWxkLCAiOwoJCQkgICAgICAkdmFsdWVzWyRmaWVsZF0gPSRkYXRhLT4kZmllbGQ7CgkJCSAgICB9CgkJCSAgfQoKCQkJJHBsYWNlaG9sZGVycz0gc3Vic3RyKCRwbGFjZWhvbGRlcnMsIDAsIC0yKTsgCgkJCQoJCQkkdGhpcy0+cGxhY2Vob2xkZXJzPSRwbGFjZWhvbGRlcnM7CgkJCSR0aGlzLT52YWx1ZXM9JHZhbHVlczsKCQkJJGNvbm49bnVsbDsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGRiX3VwZGF0ZSgkdGFibGUsICRkYXRhLCAkZmllbGRuYW1lLCAkaWQpCiAgICAgICAgewogICAgICAgICAgIAogICAgICAgICAgCSR0aGlzLT5zZXRfcGxhY2Vob2xkZXJzICgkdGFibGUsJGRhdGEpOwogICAgICAgICAgCSRzcWwgPSAiVVBEQVRFIGAkdGFibGVgIFNFVCAiLiR0aGlzLT5wbGFjZWhvbGRlcnMuIiBXSEVSRSBgJGZpZWxkbmFtZWA9OmlkIjsKICAgICAgICAgICAKICAgICAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgICAgCWlmICgkaWQhPW51bGwpICRzdG10LT5iaW5kUGFyYW0oJ2lkJywgJGlkKTsKICAgICAgICAgICAKICAgICAgICAgICAgJHN0bXQtPmV4ZWN1dGUoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgICAgCXJldHVybiB0cnVlOwogICAgCQkkY29ubj1udWxsOwogICAgCX0KCiAgIHB1YmxpYyBmdW5jdGlvbiBkYl9pbnNlcnQoJHRhYmxlLCAkZGF0YSkKICAgICAgICB7CiAgICAgICAgICAgCiAgICAgICAgICAJJHRoaXMtPnNldF9wbGFjZWhvbGRlcnMgKCR0YWJsZSwkZGF0YSk7CiAgICAgICAgICAJJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmxlYCBTRVQgIi4kdGhpcy0+cGxhY2Vob2xkZXJzOwogICAgICAgICAgIAogICAgICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAgICAgJHN0bXQtPmV4ZWN1dGUoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgICAgCSRsYXN0SWQgPSAkdGhpcy0+ZGItPmxhc3RJbnNlcnRJZCgpOwoKCQkJcmV0dXJuICRsYXN0SWQ7CiAgICAJCSRjb25uPW51bGw7CiAgICAJfSAJCgoJIHB1YmxpYyBmdW5jdGlvbiBkYl9kZWxldGUoJHRhYmxlLCAkZmllbGRuYW1lLCAkaWQpCgkgCXsKCQkKCQkgJHNxbCA9ICJERUxFVEUgRlJPTSBgJHRhYmxlYCBXSEVSRSBgJGZpZWxkbmFtZWA9OmlkIjsKICAgICAgICAgICAKICAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgIGlmICgkaWQhPW51bGwpICRzdG10LT5iaW5kUGFyYW0oJ2lkJywgJGlkKTsKICAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAkY29ubj1udWxsOwoJIAl9CgogICAgcHVibGljIGZ1bmN0aW9uIGRhdGFfcHJpbnQgKCRkYXRhKSB7CiAgICAJZWNobyAnPHByZT4nOwogICAgCQlwcmludF9yKCRkYXRhKTsKICAgIAllY2hvICc8L3ByZT4nOwogICAgfQoKCn0KCmNsYXNzIHBlcnNvbiB7CglwdWJsaWMgJHN1cm5hbWU7CglwdWJsaWMgJGlkOwoJcHVibGljICRjb3VudHJ5OwoKCWZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdXJuYW1lLCRpZCwkY291bnRyeSwkZGlzcGxheSkgewoJCSR0aGlzLT5zdXJuYW1lPSRzdXJuYW1lOwoJCSR0aGlzLT5pZD0kaWQ7CgkJJHRoaXMtPmNvdW50cnk9JGNvdW50cnk7CgkJJHRoaXMtPnN0YXR1cz0kZGlzcGxheTsKCX0KfQoKCj8+