/[corp_html]/mnogo/db_func.inc
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /mnogo/db_func.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Wed Mar 27 16:00:18 2002 UTC (22 years ago) by dpavlin
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
*** empty log message ***

1 <?
2
3 /* mnoGoSearch-db_func-php v.1.0
4 * free convenient API to database backends
5 * (C) 1999,2000 by Sergey Kartashoff <gluke@biosys.net>
6 * oracle7 support by Roman V. Petrov (poma@mail.ru)
7 *
8 * supports: MySQL , Oracle (both v7 and v8) and PostgreSQL
9 * also supports connection through ODBC interface
10 */
11
12 // API:
13 // ----
14 // db_init($dbtype,$dbname,$dbhost,
15 // $dbuser,$dbpass,$dbport,
16 // $dbodbc,$dbodbc_cursor_type) ; return nothing dbodbc can be 0 or 1
17 // db_numrows($res) ; return number of rown in result
18 // db_query($query) ; return handle to result or false if error
19 // db_fetchrow($res) ; return array with fetched row or false if error or end of rows
20 // db_dataseek($res,$from) ; return true if success or false if error
21 // db_freeresult($res) ; return nothing
22 // db_error() ; return database error string
23
24 // old function calls:
25 // -------------------
26 // initdb()
27 // query($query)
28 // fetch_row($res)
29 // db_data_seek($res,$from)
30 // free_result($res)
31
32 // -----------------------------------------------
33 // initdb() - OLD
34 // -----------------------------------------------
35 function initdb(){
36 global $dbtype,$dbname,$dbhost,$dbuser,$dbpass,$dbport;
37 global $dbodbc,$dbodbc_cursor_type;
38 db_init($dbtype,$dbname,$dbhost,$dbuser,$dbpass,$dbport,$dbodbc,$dbodbc_cursor_type);
39 }
40
41 // -----------------------------------------------
42 // query($query)
43 // -----------------------------------------------
44 function query($query) {
45 return db_query($query);
46 }
47
48 // -----------------------------------------------
49 // fetch_row($res)
50 // -----------------------------------------------
51 function fetch_row($res) {
52 return db_fetchrow($res);
53 }
54
55 // -----------------------------------------------
56 // db_data_seek($res,$from)
57 // -----------------------------------------------
58 function db_data_seek($res,$from) {
59 return db_dataseek($res,$from);
60 }
61
62 // -----------------------------------------------
63 // free_result($res)
64 // -----------------------------------------------
65 function free_result($res) {
66 db_freeresult($res);
67 }
68
69 // -----------------------------------------------
70 // db_init($dbtype,$dbname,$dbhost,$dbuser,$dbpass,$dbport)
71 // -----------------------------------------------
72 function db_init($dbtype,$dbname,$dbhost,$dbuser,$dbpass,$dbport,$dbodbc,$dbodbc_cursor_type){
73 global $dbconn;
74 global $cur_row_array;
75 global $num_rows_array;
76
77 if ($dbodbc) {
78 if ($dbodbc_cursor_type) {
79 if (! $dbconn=odbc_pconnect($dbname,$dbuser,$dbpass,$dbodbc_cursor_type))
80 print_db_error("Cannot connect to odbc datasource $dbname as user $dbuser");
81 } else {
82 if (! $dbconn=odbc_pconnect($dbname,$dbuser,$dbpass))
83 print_db_error("Cannot connect to odbc datasource $dbname as user $dbuser");
84 }
85 } else {
86 switch($dbtype) {
87 case 'mysql':
88 if (($dbhost == '') || ($dbhost == '_socket')) {
89 if (!mysql_pconnect('',$dbuser,$dbpass))
90 print_db_error("Cannot connect to local mysql socket as user $dbuser");
91 } else {
92 if ($dbport == '') {
93 if (!mysql_pconnect($dbhost,$dbuser,$dbpass))
94 print_db_error("Cannot connect to mysql host $dbhost as user $dbuser");
95 } else {
96 if (!mysql_pconnect("$dbhost:$dbport",$dbuser,$dbpass))
97 print_db_error("Cannot connect to mysql host $dbhost:$dbport as user $dbuser");
98 }
99 }
100 if (! mysql_select_db($dbname))
101 print_db_error("DB $dbname select error");
102
103 break;
104 case 'oracle':
105 case 'oracle8':
106 if (! $dbconn=OCIPLogon($dbuser,$dbpass,$dbname))
107 print_db_error("Cannot connect to oracle db $dbname as user $dbuser");
108
109 break;
110 case 'oracle7':
111 if (! $dbconn=ora_plogon("$dbuser/$dbpass@$dbname",""))
112 print_db_error("Cannot connect to oracle db $dbname as user $dbuser");
113 if (! $dbconn=ora_open($dbconn))
114 print_db_error("Cannot connect to oracle db $dbname as user $dbuser");
115 break;
116 case 'pgsql':
117 if (($dbhost == '') || ($dbhost == '_socket')) {
118 if (! $dbconn=pg_pconnect("dbname=$dbname user=$dbuser password=$dbpass"))
119 print_db_error("Cannot connect to local pgsql socket as user $dbuser");
120 } else {
121 if ($dbport == '') {
122 if (! $dbconn=pg_pconnect("dbname=$dbname host=$dbhost user=$dbuser password=$dbpass"))
123 print_db_error("Cannot connect to pgsql host $dbhost as user $dbuser");
124 } else {
125 if (! $dbconn=pg_pconnect("dbname=$dbname host=$dbhost port=$dbport user=$dbuser password=$dbpass"))
126 print_db_error("Cannot connect to pgsql host $dbhost:$dbport as user $dbuser");
127 }
128 }
129
130 $cur_row_array = array();
131 $num_rows_array = array();
132
133 break;
134 default:
135 print_db_error("Unknown DBType: $dbtype");
136 }
137 }
138 }
139
140 // -----------------------------------------------
141 // db_numrows($res)
142 // -----------------------------------------------
143 function db_numrows($res) {
144 global $dbtype;
145 global $dbodbc;
146
147 if ($dbodbc) {
148 $rows=odbc_num_rows($res);
149 } else {
150 switch($dbtype) {
151 case 'mysql':
152 $rows=mysql_numrows($res);
153 break;
154 case 'pgsql':
155 $rows=pg_numrows($res);
156 break;
157 default:
158 print_db_error("Unknown DBType: $dbtype");
159 }
160 }
161 return($rows);
162 }
163
164 // -----------------------------------------------
165 // db_query($query)
166 // -----------------------------------------------
167 function db_query($query) {
168 global $dbtype;
169 global $dbodbc;
170 global $dbconn;
171 global $cur_row_array;
172 global $num_rows_array;
173
174 if ($dbodbc) {
175 $res=odbc_exec($dbconn,$query);
176 } else {
177 switch($dbtype) {
178 case 'mysql':
179 $res=mysql_query($query);
180 break;
181 case 'oracle':
182 case 'oracle8':
183 if (! $pres=OCIPArse($dbconn,$query)) return $pres;
184 $res=OCIExecute($pres);
185 if ($res) return ($pres);
186 break;
187 case 'oracle7':
188 if (! $pres=ora_parse($dbconn, $query)) return $pres;
189 $res=ora_exec($dbconn);
190 if ($res) return ($pres);
191 break;
192 case 'pgsql':
193 $res=pg_exec($dbconn,$query);
194 $cur_row_array[$res]=0;
195 $num_rows_array[$res]=db_numrows($res);
196 break;
197 default:
198 print_db_error("Unknown DBType: $dbtype");
199 }
200 }
201 return($res);
202 }
203
204 // -----------------------------------------------
205 // db_fetchrow($res)
206 // -----------------------------------------------
207 function db_fetchrow($res) {
208 global $dbtype;
209 global $dbodbc;
210 global $dbconn;
211 global $cur_row_array;
212 global $num_rows_array;
213
214 if ($dbodbc) {
215 if (! odbc_fetch_into($res,&$row)) $row=array();
216 } else {
217 switch($dbtype) {
218 case 'mysql':
219 $row=mysql_fetch_row($res);
220 break;
221 case 'oracle':
222 case 'oracle8':
223 $result=OCIFetchInto($res,&$row,OCI_NUM+OCI_RETURN_NULLS );
224 if (! $result) $row=array();
225 break;
226 case 'oracle7':
227 $result=ora_fetch($dbconn);
228 $errno=ora_errorcode($dbconn);
229 if(1403 == $errno || !$result)
230 { // 1043 means no more records found
231 return array();
232 }
233
234 for($ix=0;$ix<ora_numcols($dbconn);$ix++)
235 {
236 $col=strtolower(ora_columnname($dbconn,$ix));
237 $value=ora_getcolumn($dbconn,$ix);
238 $row[ "$col" ] = $value;
239 $row[ $ix ] = $value;
240 }
241 break;
242 case 'pgsql':
243 if ($cur_row_array[$res] >= $num_rows_array[$res]) {
244 $row=array();
245 } else {
246 $row=pg_fetch_row($res,$cur_row_array[$res]);
247 $cur_row_array[$res]++;
248 }
249 break;
250 default:
251 print_db_error("Unknown DBType: $dbtype");
252 }
253 }
254 return($row);
255 }
256
257 // -----------------------------------------------
258 // db_dataseek($res,$from)
259 // -----------------------------------------------
260 function db_dataseek($res,$from) {
261 global $dbtype;
262 global $dbodbc;
263 global $cur_row_array;
264
265 if ($dbodbc) {
266 $dataseek=1;
267 for ($i=0; $i<$from; $i++) {
268 $row=db_fetchrow($res);
269 if (! $row) {
270 $dataseek=0;
271 break;
272 }
273 }
274 } else {
275 switch($dbtype) {
276 case 'mysql':
277 $dataseek=mysql_data_seek($res,$from);
278 break;
279 case 'oracle':
280 case 'oracle8':
281 case 'oracle7':
282 $dataseek=1;
283 for ($i=0; $i<$from; $i++) {
284 $row=db_fetchrow($res);
285 if (! $row) {
286 $dataseek=0;
287 break;
288 }
289 }
290 break;
291 case 'pgsql':
292 $dataseek=1;
293 $cur_row_array[$res]=$from;
294 break;
295 default:
296 print_db_error("Unknown DBType: $dbtype");
297 }
298 }
299 return($dataseek);
300 }
301
302 // -----------------------------------------------
303 // db_freeresult($res)
304 // -----------------------------------------------
305 function db_freeresult($res) {
306 global $dbtype;
307 global $dbodbc;
308
309 if ($dbodbc) {
310 odbc_free_result($res);
311 } else {
312 switch($dbtype) {
313 case 'mysql':
314 mysql_free_result($res);
315 break;
316 case 'oracle':
317 case 'oracle8':
318 OCIFreeStatement($res);
319 break;
320 case 'oracle7':
321 break;
322 case 'pgsql':
323 pg_freeresult($res);
324 break;
325 default:
326 print_db_error("Unknown DBType: $dbtype");
327 }
328 }
329 }
330
331 // -----------------------------------------------
332 // db_error()
333 // -----------------------------------------------
334 function db_error() {
335 global $dbtype;
336 global $dbodbc;
337 global $dbconn;
338
339 if ($dbodbc) {
340 $error='ODBC error occured';
341 } else {
342 switch($dbtype) {
343 case 'mysql':
344 $error=mysql_error();
345 break;
346 case 'oracle':
347 case 'oracle8':
348 $error=OCIError();
349 break;
350 case 'oracle7':
351 $error=Ora_Error($dbconn);
352 break;
353 case 'pgsql':
354 $error=pg_errormessage();
355 break;
356 default:
357 print_db_error("Unknown DBType: $dbtype");
358 }
359 }
360 return $error;
361 }
362
363 // -----------------------------------------------
364 // print_db_error($str)
365 // -----------------------------------------------
366 function print_db_error($str){
367 print "$str\n";
368 exit;
369 }
370
371 ?>

  ViewVC Help
Powered by ViewVC 1.1.26