source: trunk/web/punbb/include/dblayer/mysqli.php @ 1

Last change on this file since 1 was 1, checked in by dj3c1t, 13 years ago

import initial

File size: 4.0 KB
RevLine 
[1]1<?php
2/***********************************************************************
3
4  Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)
5
6  This file is part of PunBB.
7
8  PunBB is free software; you can redistribute it and/or modify it
9  under the terms of the GNU General Public License as published
10  by the Free Software Foundation; either version 2 of the License,
11  or (at your option) any later version.
12
13  PunBB is distributed in the hope that it will be useful, but
14  WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  MA  02111-1307  USA
22
23************************************************************************/
24
25
26// Make sure we have built in support for MySQL
27if (!function_exists('mysqli_connect'))
28        exit('This PHP environment doesn\'t have Improved MySQL (mysqli) support built in. Improved MySQL support is required if you want to use a MySQL 4.1 (or later) database to run this forum. Consult the PHP documentation for further assistance.');
29
30
31class DBLayer
32{
33        var $prefix;
34        var $link_id;
35        var $query_result;
36
37        var $saved_queries = array();
38        var $num_queries = 0;
39
40
41        function DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, $foo)
42        {
43                $this->prefix = $db_prefix;
44
45                // Was a custom port supplied with $db_host?
46                if (strpos($db_host, ':') !== false)
47                        list($db_host, $db_port) = explode(':', $db_host);
48
49                if (isset($db_port))
50                        $this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name, $db_port);
51                else
52                        $this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name);
53
54                if (!$this->link_id)
55                        error('Unable to connect to MySQL and select database. MySQL reported: '.mysqli_connect_error(), __FILE__, __LINE__);
56        }
57
58
59        function start_transaction()
60        {
61                return;
62        }
63
64
65        function end_transaction()
66        {
67                return;
68        }
69
70
71        function query($sql, $unbuffered = false)
72        {
73                if (defined('PUN_SHOW_QUERIES'))
74                        $q_start = get_microtime();
75
76                $this->query_result = @mysqli_query($this->link_id, $sql);
77
78                if ($this->query_result)
79                {
80                        if (defined('PUN_SHOW_QUERIES'))
81                                $this->saved_queries[] = array($sql, sprintf('%.5f', get_microtime() - $q_start));
82
83                        ++$this->num_queries;
84
85                        return $this->query_result;
86                }
87                else
88                {
89                        if (defined('PUN_SHOW_QUERIES'))
90                                $this->saved_queries[] = array($sql, 0);
91
92                        return false;
93                }
94        }
95
96
97        function result($query_id = 0, $row = 0)
98        {
99                if ($query_id)
100                {
101                        if ($row)
102                                @mysqli_data_seek($query_id, $row);
103
104                        $cur_row = @mysqli_fetch_row($query_id);
105                        return $cur_row[0];
106                }
107                else
108                        return false;
109        }
110
111
112        function fetch_assoc($query_id = 0)
113        {
114                return ($query_id) ? @mysqli_fetch_assoc($query_id) : false;
115        }
116
117
118        function fetch_row($query_id = 0)
119        {
120                return ($query_id) ? @mysqli_fetch_row($query_id) : false;
121        }
122
123
124        function num_rows($query_id = 0)
125        {
126                return ($query_id) ? @mysqli_num_rows($query_id) : false;
127        }
128
129
130        function affected_rows()
131        {
132                return ($this->link_id) ? @mysqli_affected_rows($this->link_id) : false;
133        }
134
135
136        function insert_id()
137        {
138                return ($this->link_id) ? @mysqli_insert_id($this->link_id) : false;
139        }
140
141
142        function get_num_queries()
143        {
144                return $this->num_queries;
145        }
146
147
148        function get_saved_queries()
149        {
150                return $this->saved_queries;
151        }
152
153
154        function free_result($query_id = false)
155        {
156                return ($query_id) ? @mysqli_free_result($query_id) : false;
157        }
158
159
160        function escape($str)
161        {
162                return mysqli_real_escape_string($this->link_id, $str);
163        }
164
165
166        function error()
167        {
168                $result['error_sql'] = @current(@end($this->saved_queries));
169                $result['error_no'] = @mysqli_errno($this->link_id);
170                $result['error_msg'] = @mysqli_error($this->link_id);
171
172                return $result;
173        }
174
175
176        function close()
177        {
178                if ($this->link_id)
179                {
180                        if ($this->query_result)
181                                @mysqli_free_result($this->query_result);
182
183                        return @mysqli_close($this->link_id);
184                }
185                else
186                        return false;
187        }
188}
Note: See TracBrowser for help on using the repository browser.