OSDN Git Service

Small update
[idb/iDB.git.git] / inc / misc / sql / pgsql.php
1 <?php
2 /*
3     This program is free software; you can redistribute it and/or modify
4     it under the terms of the Revised BSD License.
5
6     This program is distributed in the hope that it will be useful,
7     but WITHOUT ANY WARRANTY; without even the implied warranty of
8     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9     Revised BSD License for more details.
10
11     Copyright 2004-2022 iDB Support - https://idb.osdn.jp/support/category.php?act=view&id=1
12     Copyright 2004-2022 Game Maker 2k - https://idb.osdn.jp/support/category.php?act=view&id=2
13
14     $FileInfo: pgsql.php - Last Update: 4/9/2022 SVN 959 - Author: cooldude2k $
15 */
16 $File3Name = basename($_SERVER['SCRIPT_NAME']);
17 if ($File3Name=="pgsql.php"||$File3Name=="/pgsql.php") {
18         @header('Location: index.php');
19         exit(); }
20 // PostgreSQL Functions.
21 function sql_error($link=null) {
22 if(isset($link)) {
23         $result = pg_last_error($link); }
24 if(!isset($link)) {
25         $result = pg_last_error(); }
26 if ($result=="") {
27         return ""; }
28         return $result; }
29 function sql_errno($link=null) {
30 if(isset($link)) {
31         $result = pg_last_error($link); }
32 if(!isset($link)) {
33         $result = pg_last_error(); }
34 if ($result===0) {
35         return 0; }
36         return $result; }
37 function sql_errorno($link=null) {
38 if(isset($link)) {
39         $result = pg_last_error($link); }
40 if(!isset($link)) {
41         $result = pg_last_error(); }
42 if ($result=="") {
43         return ""; }
44         return $result; }
45 // Execute a query :P
46 $NumQueries = 0;
47 function sql_query($query,$link=null) {
48 global $NumQueries;
49 if(isset($link)) {
50         $result = pg_query($link,$query); }
51 if(!isset($link)) {
52         $result = pg_query(null,$query); }
53 if ($result===false) {
54     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
55         return false; }
56 if ($result!==false) {
57         ++$NumQueries;
58         return $result; } }
59 //Fetch Number of Rows
60 function sql_num_rows($result) {
61 $num = pg_num_rows($result);
62 if ($num===false) {
63     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
64         return false; }
65         return $num; }
66 // Connect to pgsql database
67 function sql_connect_db($server,$username,$password,$database=null,$new_link=false) {
68 if($new_link!==true) { $new_link = false; }
69 $pgport = "5432";
70 $hostex = explode(":", $server);
71 if(isset($hostex[1])&&
72         !is_numeric($hostex[1])) {
73         $hostex[1] = $pgport; }
74 if(isset($hostex[1])) { 
75         $server = $hostex[0];
76         $pgport = $hostex[1]; }
77 $pgstring = null;
78 if($database===null) {
79 $pgstring = "host=".$server." port=".$pgport." user=".$username." password=".$password; }
80 if($database!==null) {
81 $pgstring = "host=".$server." port=".$pgport." dbname=".$database." user=".$username." password=".$password; }
82 $link = pg_connect($pgstring);
83 if ($link===false) {
84     output_error("Not connected: ".sql_error(),E_USER_ERROR);
85         return false; }
86 return $link; }
87 function sql_disconnect_db($link=null) {
88 return cubrid_disconnect($link); }
89 // Query Results :P
90 function sql_result($result,$row,$field=0) {
91 if(is_numeric($field)) {
92 $value = pg_fetch_result($result, $row, $field); }
93 if(!is_numeric($field)) {
94 $value = pg_fetch_result($result, $row, "\"".$field."\""); }
95 if ($value===false) { 
96     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
97         return false; }
98         return $value; }
99 // Free Results :P
100 function sql_free_result($result) {
101 $fresult = pg_free_result($result);
102 if ($fresult===false) {
103     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
104         return false; }
105 if ($fresult===true) {
106         return true; } }
107 //Fetch Results to Array
108 function sql_fetch_array($result,$result_type=MYSQL_BOTH) {
109 $row = pg_fetch_array($result,$result_type);
110         return $row; }
111 //Fetch Results to Associative Array
112 function sql_fetch_assoc($result) {
113 $row = pg_fetch_assoc($result);
114         return $row; }
115 //Fetch Row Results
116 function sql_fetch_row($result) {
117 $row = pg_fetch_row($result);
118         return $row; }
119 //Get Server Info
120 function sql_server_info($link=null) {
121 if(isset($link)) {
122         $result = pg_version($link); }
123 if(!isset($link)) {
124         $result = pg_version(); }
125         return $result['server']; }
126 //Get Client Info
127 function sql_client_info($link=null) {
128 if(isset($link)) {
129         $result = pg_version($link); }
130 if(!isset($link)) {
131         $result = pg_version(); }
132         return $result['client']; }
133 function sql_escape_string($string,$link=null) {
134 global $SQLStat;
135 if(!isset($link)) { $link = $SQLStat; }
136 if(isset($string)) {
137  if(isset($link)) {
138         $string = pg_escape_string($link,$string); }
139  if(!isset($link)) {
140         $string = pg_escape_string($SQLStat,$string); } }
141 if ($string===false) {
142     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
143         return false; }
144         return $string; }
145 // SafeSQL Lite Source Code by Cool Dude 2k
146 // Make SQL Query's safe
147 function sql_pre_query($query_string,$query_vars) {
148    $query_array = array(array("%i","%I","%F","%S"),array("%d","%d","%f","%s"));
149    $query_string = str_replace($query_array[0], $query_array[1], $query_string);
150    if (get_magic_quotes_gpc()) {
151        $query_vars  = array_map("stripslashes", $query_vars); }
152    $query_vars = array_map("sql_escape_string", $query_vars);
153    $query_val = $query_vars;
154 $query_num = count($query_val);
155 $query_i = 0;
156 while ($query_i < $query_num) {
157 $query_is = $query_i+1;
158 $query_val[$query_is] = $query_vars[$query_i];
159 ++$query_i; }
160    $query_val[0] = $query_string;
161    return call_user_func_array("sprintf",$query_val); }
162 function sql_set_charset($charset,$link=null) {
163         return true; }
164 /*
165 function sql_set_charset($charset,$link=null) {
166 if(function_exists('mysql_set_charset')===false) {
167 if(!isset($link)) {
168         $result = sql_query("SET CHARACTER SET '".$charset."'"); }
169 if(isset($link)) {
170         $result = sql_query("SET CHARACTER SET '".$charset."'",$link); }
171 if ($result===false) {
172     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
173         return false; }
174 if(!isset($link)) {
175         $result = sql_query("SET NAMES '".$charset."'"); }
176 if(isset($link)) {
177         $result = sql_query("SET NAMES '".$charset."'",$link); } 
178 if ($result===false) {
179     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
180         return false; }
181         return true; }
182 if(function_exists('mysql_set_charset')===true) {
183 if(isset($link)) {
184         $result = mysql_set_charset($charset,$link); }
185 if(!isset($link)) {
186         $result = mysql_set_charset($charset); }
187 if ($result===false) {
188     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
189         return false; }
190         return true; }
191 if(function_exists('mysql_set_charset')===false) {
192 function mysql_set_charset($charset,$link) {
193 if(isset($link)) {
194         $result = sql_set_charset($charset,$link); }
195 if(!isset($link)) {
196         $result = sql_set_charset($charset); }
197 if ($result===false) {
198     output_error("SQL Error: ".sql_error(),E_USER_ERROR);
199         return false; }
200         return true; } }
201 */
202 // Get next id for stuff
203 function sql_get_next_id($tablepre,$table,$link=null) {
204    $getnextidq = sql_pre_query("SELECT currval('".$tablepre.$table."_id_seq');", array());
205 if(!isset($link)) {
206         $result = sql_query($getnextidq); }
207 if(isset($link)) {
208         $getnextidr = sql_query($getnextidq,$link); } 
209         return sql_result($getnextidr,0);
210         sql_free_result($getnextidr); }
211 // Get number of rows for table
212 function sql_get_num_rows($tablepre,$table,$link=null) {
213    $getnextidq = sql_pre_query("SHOW TABLE STATUS LIKE '".$tablepre.$table."'", array());
214 if(!isset($link)) {
215         $getnextidr = sql_query($getnextidq); }
216 if(isset($link)) {
217         $getnextidr = sql_query($getnextidq,$link); } 
218    $getnextid = sql_fetch_assoc($getnextidr);
219    return $getnextid['Rows'];
220    @sql_free_result($getnextidr); }
221 ?>