]> git.wh0rd.org - tt-rss.git/blob - classes/db/mysqli.php
817b48c0ce89bbd915423c2135b9dbd7bc938ad5
[tt-rss.git] / classes / db / mysqli.php
1 <?php
2 class Db_Mysqli implements IDb {
3 private $link;
4 private $last_error;
5
6 function connect($host, $user, $pass, $db, $port) {
7 if ($port)
8 $this->link = mysqli_connect($host, $user, $pass, $db, $port);
9 else
10 $this->link = mysqli_connect($host, $user, $pass, $db);
11
12 if ($this->link) {
13 $this->init();
14
15 return $this->link;
16 } else {
17 print("Unable to connect to database (as $user to $host, database $db): " . mysqli_connect_error());
18 exit(102);
19 }
20 }
21
22 function escape_string($s, $strip_tags = true) {
23 if ($strip_tags) $s = strip_tags($s);
24
25 return mysqli_real_escape_string($this->link, $s);
26 }
27
28 function query($query, $die_on_error = true) {
29 $result = @mysqli_query($this->link, $query);
30 if (!$result) {
31 $this->last_error = @mysqli_error($this->link);
32
33 @mysqli_query($this->link, "ROLLBACK");
34 user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"),
35 $die_on_error ? E_USER_ERROR : E_USER_WARNING);
36 }
37
38 return $result;
39 }
40
41 function fetch_assoc($result) {
42 return mysqli_fetch_assoc($result);
43 }
44
45
46 function num_rows($result) {
47 return mysqli_num_rows($result);
48 }
49
50 function fetch_result($result, $row, $param) {
51 if (mysqli_data_seek($result, $row)) {
52 $line = mysqli_fetch_assoc($result);
53 return $line[$param];
54 } else {
55 return false;
56 }
57 }
58
59 function close() {
60 return mysqli_close($this->link);
61 }
62
63 function affected_rows($result) {
64 return mysqli_affected_rows($this->link);
65 }
66
67 function last_error() {
68 return mysqli_error();
69 }
70
71 function last_query_error() {
72 return $this->last_error;
73 }
74
75 function init() {
76 $this->query("SET time_zone = '+0:0'");
77
78 if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
79 mysqli_set_charset($this->link, MYSQL_CHARSET);
80 }
81
82 return true;
83 }
84
85 }