Completed
Push — master ( 1f90e4...0f8170 )
by Jean-Christophe
02:14
created

Database::query()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
namespace micro\db;
3
/**
4
 * Classe d'accès aux Bases de données encapsulant un objet PDO
5
 * @author heron
6
 * @version 1.0.0.3
7
 * @package db
8
 *
9
 */
10
class Database {
11
	private $serverName;
12
	private $port;
13
	private $dbName;
14
	private $user;
15
	private $password;
16
	private $pdoObject;
17
	private $statements=[];
18
19
	/**
20
	 * Constructeur
21
	 * @param string $dbName
22
	 * @param string $serverName
23
	 * @param string $port
24
	 * @param string $user
25
	 * @param string $password
26
	 */
27
	public function __construct($dbName, $serverName = "localhost", $port = "3306",
28
			$user = "root", $password = "") {
29
		$this->dbName = $dbName;
30
		$this->serverName = $serverName;
31
		$this->port = $port;
32
		$this->user = $user;
33
		$this->password = $password;
34
	}
35
36
	/**
37
	 * Réalise la connexion à la base de données
38
	 */
39
	public function connect() {
40
		try {
41
			$this->pdoObject = new \PDO(
42
					'mysql:host=' . $this->serverName . ';dbname='
43
							. $this->dbName . ';port:' . $this->port,
44
					$this->user, $this->password);
45
			$this->pdoObject->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
46
			$this->pdoObject->exec("SET CHARACTER SET utf8");
47
48
		} catch (\PDOException $e) {
49
			print "Error!: " . $e->getMessage() . "<br/>";
50
		}
51
	}
52
53
	/**
54
	 * Exécute l'instruction SQL passée en paramètre et retourne un statement
55
	 * @param string $sql
56
	 * @return PDOStatement
57
	 */
58
	public function query($sql) {
59
		return $this->pdoObject->query($sql);
60
	}
61
62
	public function prepareAndExecute($sql){
63
		$statement=$this->getStatement($sql);
64
		$statement->execute();
65
		$result= $statement->fetchAll();
66
		$statement->closeCursor();
67
		return $result;
68
	}
69
70
	private function getStatement($sql){
71
		if(!isset($this->statements[$sql])){
72
			$this->statements[$sql]=$this->pdoObject->prepare($sql);
73
			$this->statements[$sql]->setFetchMode(\PDO::FETCH_ASSOC);
74
75
		}
76
		return $this->statements[$sql];
77
	}
78
79
	/**
80
	 * Exécute l'instruction sql $sql de mise à jour (INSERT, UPDATE ou DELETE)
81
	 * @return le nombre d'enregistrements affectés
82
	 */
83
	public function execute($sql) {
84
		return $this->pdoObject->exec($sql);
85
	}
86
87
	public function getServerName() {
88
		return $this->serverName;
89
	}
90
91
	public function setServerName($serverName) {
92
		$this->serverName = $serverName;
93
	}
94
95
	/**
96
	 * Prépare l'instruction $sql pour son exécution
97
	 * @param String $sql
98
	 * @return PDOStatement
99
	 */
100
	public function prepareStatement($sql){
101
		return $this->pdoObject->prepare($sql);
102
	}
103
104
	/**
105
	 * Affecte la valeur $value au paramétre $parameter
106
	 * @param PDOStatement $statement
107
	 * @param String $parameter
108
	 * @param mixed $value
109
	 * @return boolean
110
	 */
111
	public function bindValueFromStatement(\PDOStatement $statement,$parameter,$value){
112
		return $statement->bindValue(":".$parameter, $value);
113
	}
114
115
	/**
116
	 * retourne le dernier auto-increment généré
117
	 * @return integer
118
	 */
119
	public function lastInserId(){
120
		return $this->pdoObject->lastInsertId();
121
	}
122
123
	public function getTablesName(){
124
		$sql = 'SHOW TABLES';
125
		$query = $this->pdoObject->query($sql);
126
		return $query->fetchAll(\PDO::FETCH_COLUMN);
127
	}
128
129
}
130