class Database_Query protected db конструктор передеётся объект Databa

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Database_Query {
protected $db;
//В конструктор передеётся объект Database_Factory
public function __construct($obj) {
$this->db = $obj;
}
//Плэйсхолдер
public function PlaceHolder($condition, &$data = '') {
$mass = explode(' ', $condition);
if (!empty($data) || $data == false) {
if (!is_array($data)) { //Fix
$temp = $data;
unset($data);
$data[] = $temp;
}
reset($data);
}
foreach ($mass as &$value) {
if (array_diff(array($value), $this->db->getKeywords())) {
if (substr($value, 0, 1) === '?') {
if (substr($value, 1, 1) !== '_') {
$value = $this->shielding(current($data), substr($value, 1, 1));
next($data);
} else $value = substr($value, 2);
} else $value = $this->shielding($value, 't');
} else {
$value = ' '.$value.' ';
}
}
return implode('', $mass);
}
//Экранирование
public function shielding($value, $mode) {
if (empty($this->db->getCon)) $this->db->setDb(); //Проверка существования указателя подключения к бд
switch ($mode) {
case 't':
return '`'.$value.'`';
case 'b':
return '('.$value.')';
case 'i':
return (int)$value;
case 'f':
return (float)$value;
case 'n':
return $value;
case 's':
return "'".mysqli_escape_string($this->db->getCon(), $value)."'";
}
}
}