forked from pistonsky/Parser-Kinopoisk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DB.php
64 lines (55 loc) · 1.99 KB
/
DB.php
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
58
59
60
61
62
63
64
<?php
/**
* DB class
* Работа с базой
* В базе должна быть таблица cache, в которой должны быть три столбца: id, json и hit.
* Структура таблицы:
* CREATE TABLE IF NOT EXISTS `cache` (
* `id` int(11) NOT NULL COMMENT 'id фильма на кинопоиске',
* `json` text NOT NULL COMMENT 'json, который надо послать',
* `hit` int(11) NOT NULL DEFAULT '0' COMMENT 'сколько раз дёрнули из кеша',
* PRIMARY KEY (`id`)
* ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Кеш парсера кинопоиска';
*/
// database connection settings
define("DB_NAME","kinopoisk");
define("DB_USER","pistonsky");
define("DB_PASSWORD","");
define("DB_HOST","localhost");
define("DB_PORT","5432");
class DB {
private static $instance = null; // singleton pattern
private $DBHandle; // database handle
private function __construct ()
{
// database handle and settings
try {
$this->DBHandle = new PDO("mysql:host=".DB_HOST.";port=".DB_PORT.";dbname=".DB_NAME, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
public static function getInstance ()
{
if (self::$instance == null)
self::$instance = new DB();
return self::$instance;
}
public static function query($sql)
{
if (self::$instance == null)
self::$instance = new DB();
$data = self::$instance->DBHandle->query($sql);
if (strpos($sql, 'INSERT') === 0) {
return self::$instance->DBHandle->lastInsertId();
} else if (is_object($data)) {
$result = $data->fetchAll();
if (count($result) > 0)
return $result;
else
return false;
} else {
return false;
}
}
}