Login | ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/prepend/trunk/php_auto_pre/001-mysql_replacement.php
Revision: 2
Committed: Thu May 2 09:34:17 2019 UTC (12 months, 4 weeks ago) by daniel-marschall
File size: 17392 byte(s)
Log Message:
Initial release to SVN

File Contents

# Content
1 <?php
2
3 // TODO: test everything
4 // TODO: return values?
5 // TODO: check if we matched all stuff mentioned here: https://www.phpclasses.org/blog/package/9199/post/3-Smoothly-Migrate-your-PHP-Code-using-the-Old-MySQL-extension-to-MySQLi.html
6
7 $vts_mysqli = null;
8
9 // Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
10 function mysql_affected_rows($link_identifier=NULL) {
11 global $vts_mysqli;
12 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
13 if (is_null($li)) throw new Exception("Cannot execute mysql_affected_rows(). No valid connection to server.");
14
15 return $li->affected_rows;
16 }
17
18 // Liefert den Namen des Zeichensatzes
19 function mysql_client_encoding($link_identifier=NULL) {
20 global $vts_mysqli;
21 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
22 if (is_null($li)) throw new Exception("Cannot execute mysql_client_encoding(). No valid connection to server.");
23
24 return $li->character_set_name();
25 }
26
27 // Schließt eine Verbindung zu MySQL
28 function mysql_close($link_identifier=NULL) {
29 global $vts_mysqli;
30 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
31 if (is_null($li)) throw new Exception("Cannot execute mysql_close(). No valid connection to server.");
32
33 return $li->close();
34 }
35
36 // Öffnet eine Verbindung zu einem MySQL-Server
37 function mysql_connect($server=null, $username=null, $password=null, $new_link=false, $client_flags=0) {
38 global $vts_mysqli;
39 $ary = explode(':', $server);
40 $host = $ary[0];
41 $port = isset($ary[1]) ? $ary[1] : ini_get("mysqli.default_port");
42 if (is_null($server)) $port = ini_get("mysqli.default_host");
43 if (is_null($username)) $port = ini_get("mysqli.default_user");
44 if (is_null($password)) $port = ini_get("mysqli.default_password");
45 $vts_mysqli = new mysqli($host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
46 return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
47 }
48
49 // Anlegen einer MySQL-Datenbank
50 function mysql_create_db($database_name, $link_identifier=NULL) {
51 global $vts_mysqli;
52 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
53 if (is_null($li)) throw new Exception("Cannot execute mysql_create_db(). No valid connection to server.");
54
55 return mysql_query("CREATE DATABASE `$database_name`", $li) !== false;
56 }
57
58 // Bewegt den internen Ergebnis-Zeiger
59 function mysql_data_seek($result, $row_number) {
60 if (!$result) {
61 $err = mysql_error();
62 throw new Exception("Called mysql_data_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
63 }
64 return $result->data_seek($offset) !== false;
65 }
66
67 // Liefert Schema Namen vom Aufruf von mysql_list_dbs
68 function mysql_db_name($result, $row, $field=NULL) {
69 if (!$result) {
70 $err = mysql_error();
71 throw new Exception("Called mysql_db_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
72 }
73 $result->data_seek($row);
74 return mysql_fetch_array($result)[is_null($field) ? 0 : $field];
75 }
76
77 // Selektiert ein Schema und führt in ihm Anfrage aus
78 function mysql_db_query($database, $query, $link_identifier=NULL) {
79 global $vts_mysqli;
80 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
81 if (is_null($li)) throw new Exception("Cannot execute mysql_db_query(). No valid connection to server.");
82
83 mysql_select_db($database, $li);
84 return mysql_query($query, $li);
85 // Note: The mysql_*() implementation defines, that we will not jump back to our original DB
86 }
87
88 // Löschen eines Schemas
89 function mysql_drop_db($database_name, $link_identifier=NULL) {
90 global $vts_mysqli;
91 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
92 if (is_null($li)) throw new Exception("Cannot execute mysql_drop_db(). No valid connection to server.");
93
94 return mysql_query("DROP DATABASE `$database_name`", $li) !== false;
95 }
96
97 // Liefert die Nummer einer Fehlermeldung einer zuvor ausgeführten MySQL Operation
98 function mysql_errno($link_identifier=NULL) {
99 global $vts_mysqli;
100 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
101 if (is_null($li)) throw new Exception("Cannot execute mysql_errno(). No valid connection to server.");
102
103 return !empty($li->connect_errno) ? $li->connect_errno : $li->errno;
104 }
105
106 // Liefert den Fehlertext der zuvor ausgeführten MySQL Operation
107 function mysql_error($link_identifier=NULL) {
108 global $vts_mysqli;
109 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
110 if (is_null($li)) throw new Exception("Cannot execute mysql_error(). No valid connection to server.");
111
112 return !empty($li->connect_error) ? $li->connect_error : $li->error;
113 }
114
115 // Maskiert einen String zur Benutzung in einer MySQL Abfrage
116 function mysql_escape_string($unescaped_string) {
117 global $vts_mysqli;
118 return $vts_mysqli->real_escape_string($unescaped_string);
119 }
120
121 // Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
122 define('MYSQL_ASSOC', MYSQLI_ASSOC);
123 define('MYSQL_NUM', MYSQLI_NUM);
124 define('MYSQL_BOTH', MYSQLI_BOTH);
125 function mysql_fetch_array($result, $result_type=MYSQL_BOTH) {
126 if (!$result) {
127 $err = mysql_error();
128 throw new Exception("Called mysql_fetch_array() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
129 }
130 return $result->fetch_array($result_type);
131 }
132
133 // Liefert einen Datensatz als assoziatives Array
134 function mysql_fetch_assoc($result) {
135 if (!$result) {
136 $err = mysql_error();
137 throw new Exception("Called mysql_fetch_assoc() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
138 }
139 return $result->fetch_assoc();
140 }
141
142 // Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
143 function mysql_fetch_field($result, $field_offset=0) {
144 if (!$result) {
145 $err = mysql_error();
146 throw new Exception("Called mysql_fetch_field() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
147 }
148 return $result->fetch_field();
149 }
150
151 // Liefert die Länge eines jeden Feldes in einem Ergebnis
152 function mysql_fetch_lengths($result) {
153 if (!$result) {
154 $err = mysql_error();
155 throw new Exception("Called mysql_fetch_lengths() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
156 }
157 return $result->lengths;
158 }
159
160 // Liefert eine Ergebniszeile als Objekt
161 function mysql_fetch_object($result, $class_name="stdClass", $params=null) {
162 if (!$result) {
163 $err = mysql_error();
164 throw new Exception("Called mysql_fetch_object() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
165 }
166 if ($params) {
167 return $result->fetch_object($class_name, $params);
168 } else {
169 return $result->fetch_object($class_name);
170 }
171 }
172
173 // Liefert einen Datensatz als indiziertes Array
174 function mysql_fetch_row($result) {
175 if (!$result) {
176 $err = mysql_error();
177 throw new Exception("Called mysql_fetch_row() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
178 }
179 return $result->fetch_row();
180 }
181
182 // Liefert die Flags des spezifizierten Feldes in einem Anfrageergebnis
183 function mysql_field_flags($result, $field_offset) {
184 if (!$result) {
185 $err = mysql_error();
186 throw new Exception("Called mysql_field_flags() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
187 }
188 return $result->fetch_field_direct($fieldnr)->flags;
189 }
190
191 // Liefert die Länge des angegebenen Feldes
192 function mysql_field_len($result, $field_offset) {
193 if (!$result) {
194 $err = mysql_error();
195 throw new Exception("Called mysql_field_len() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
196 }
197 return $result->fetch_field_direct($fieldnr)->length;
198 }
199
200 // Liefert den Namen eines Feldes in einem Ergebnis
201 function mysql_field_name($result, $field_offset) {
202 if (!$result) {
203 $err = mysql_error();
204 throw new Exception("Called mysql_field_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
205 }
206 return $result->fetch_field_direct()->name; //or "orgname"
207 }
208
209 // Setzt den Ergebniszeiger auf ein bestimmtes Feldoffset
210 function mysql_field_seek($result, $field_offset) {
211 if (!$result) {
212 $err = mysql_error();
213 throw new Exception("Called mysql_field_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
214 }
215 return $result->field_seek($field_offset);
216 }
217
218 // Liefert den Namen der Tabelle, die das genannte Feld enthält
219 function mysql_field_table($result, $field_offset) {
220 if (!$result) {
221 $err = mysql_error();
222 throw new Exception("Called mysql_field_table() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
223 }
224 return $result->fetch_field_direct($field_offset)->table; // or "orgtable"
225 }
226
227 // Liefert den Typ des spezifizierten Feldes in einem Ergebnis
228 function mysql_field_type($result, $field_offset) {
229 if (!$result) {
230 $err = mysql_error();
231 throw new Exception("Called mysql_field_type() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
232 }
233 return $result->fetch_field_direct($field_offset)->type;
234 }
235
236 // Gibt belegten Speicher wieder frei
237 function mysql_free_result($result) {
238 if (!$result) {
239 $err = mysql_error();
240 throw new Exception("Called mysql_free_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
241 }
242 return $result->free();
243 }
244
245 // Liefert MySQL Clientinformationen
246 function mysql_get_client_info() {
247 global $vts_mysqli;
248 return $vts_mysqli->get_client_info();
249 }
250
251 // Liefert MySQL Host Informationen
252 function mysql_get_host_info($link_identifier=NULL) {
253 global $vts_mysqli;
254 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
255 if (is_null($li)) throw new Exception("Cannot execute mysql_get_host_info(). No valid connection to server.");
256
257 return $li->host_info;
258 }
259
260 // Liefert MySQL Protokollinformationen
261 function mysql_get_proto_info($link_identifier=NULL) {
262 global $vts_mysqli;
263 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
264 if (is_null($li)) throw new Exception("Cannot execute mysql_get_proto_info(). No valid connection to server.");
265
266 return $li->protocol_version;
267 }
268
269 // Liefert MySQL Server Informationen
270 function mysql_get_server_info($link_identifier=NULL) {
271 global $vts_mysqli;
272 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
273 if (is_null($li)) throw new Exception("Cannot execute mysql_get_server_info(). No valid connection to server.");
274
275 return $li->server_info;
276 }
277
278 // Liefert Informationen über die zuletzt ausgeführte Anfrage zurück
279 function mysql_info($link_identifier=NULL) {
280 global $vts_mysqli;
281 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
282 if (is_null($li)) throw new Exception("Cannot execute mysql_info(). No valid connection to server.");
283
284 return $li->info;
285 }
286
287 // Liefert die ID, die in der vorherigen Abfrage erzeugt wurde
288 function mysql_insert_id($link_identifier=NULL) {
289 global $vts_mysqli;
290 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
291 if (is_null($li)) throw new Exception("Cannot execute mysql_insert_id(). No valid connection to server.");
292
293 return $li->insert_id;
294 }
295
296 // Auflistung der verfügbaren Datenbanken (Schemata) auf einem MySQL Server
297 function mysql_list_dbs($link_identifier=NULL) {
298 global $vts_mysqli;
299 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
300 if (is_null($li)) throw new Exception("Cannot execute mysql_list_dbs(). No valid connection to server.");
301
302 return mysql_query('SHOW DATABASES', $li);
303 }
304
305 // Listet MySQL Tabellenfelder auf
306 function mysql_list_fields($database_name, $table_name, $link_identifier=NULL) {
307 global $vts_mysqli;
308 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
309 if (is_null($li)) throw new Exception("Cannot execute mysql_list_fields(). No valid connection to server.");
310
311 return mysql_query("SHOW COLUMNS FROM `$database_name`.`$table_name`", $li);
312 }
313
314 // Zeigt die MySQL Prozesse an
315 function mysql_list_processes($link_identifier=NULL) {
316 global $vts_mysqli;
317 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
318 if (is_null($li)) throw new Exception("Cannot execute mysql_list_processes(). No valid connection to server.");
319
320 return $li->thread_id;
321 }
322
323 // Listet Tabellen in einer MySQL Datenbank auf
324 function mysql_list_tables($database, $link_identifier=NULL) {
325 global $vts_mysqli;
326 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
327 if (is_null($li)) throw new Exception("Cannot execute mysql_list_tables(). No valid connection to server.");
328
329 return mysql_query("SHOW TABLES FROM `$database`", $li);
330 }
331
332 // Liefert die Anzahl der Felder in einem Ergebnis
333 function mysql_num_fields($result) {
334 if (!$result) {
335 $err = mysql_error();
336 throw new Exception("Called mysql_num_fields() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
337 }
338 global $vts_mysqli;
339 return $vts_mysqli->field_count;
340 }
341
342 // Liefert die Anzahl der Zeilen im Ergebnis
343 function mysql_num_rows($result) {
344 if (!$result) {
345 $err = mysql_error();
346 throw new Exception("Called mysql_num_rows() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
347 }
348 return $result->num_rows;
349 }
350
351 // Öffnet eine persistente Verbindung zum MySQL Server
352 function mysql_pconnect($server=null, $username=null, $password=null, $client_flags=0) {
353 global $vts_mysqli;
354 $ary = explode(':', $server);
355 $host = $ary[0];
356 $port = isset($ary[1]) ? $ary[1] : ini_get("mysqli.default_port");
357 if (is_null($server)) $port = ini_get("mysqli.default_host");
358 if (is_null($username)) $port = ini_get("mysqli.default_user");
359 if (is_null($password)) $port = ini_get("mysqli.default_password");
360 $vts_mysqli = new mysqli('p:'.$host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
361 return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
362 }
363
364 // Ping a server connection or reconnect if there is no connection
365 function mysql_ping($link_identifier=NULL) {
366 global $vts_mysqli;
367 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
368 if (is_null($li)) throw new Exception("Cannot execute mysql_ping(). No valid connection to server.");
369
370 return $li->ping();
371 }
372
373 // Sendet eine Anfrage an MySQL
374 function mysql_query($query, $link_identifier=NULL) {
375 global $vts_mysqli;
376 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
377 if (is_null($li)) throw new Exception("Cannot execute mysql_query(). No valid connection to server.");
378
379 return $li->query($query, $resultmode=MYSQLI_STORE_RESULT);
380 }
381
382 // Maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung
383 function mysql_real_escape_string($unescaped_string, $link_identifier=NULL) {
384 global $vts_mysqli;
385 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
386 if (is_null($li)) throw new Exception("Cannot execute mysql_real_escape_string(). No valid connection to server.");
387
388 return $li->escape_string($unescaped_string);
389 }
390
391 // Liefert Ergebnis
392 function mysql_result($result, $row, $field=0) {
393 if (!$result) {
394 $err = mysql_error();
395 throw new Exception("Called mysql_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
396 }
397 $result->data_seek($row);
398 return mysql_fetch_array($result)[$field];
399 }
400
401 // Auswahl einer MySQL Datenbank
402 function mysql_select_db($database_name, $link_identifier=NULL) {
403 global $vts_mysqli;
404 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
405 if (is_null($li)) throw new Exception("Cannot execute mysql_select_db(). No valid connection to server.");
406
407 return $li->select_db($database_name);
408 }
409
410 // Setzt den Verbindungszeichensatz
411 function mysql_set_charset($charset, $link_identifier=NULL) {
412 global $vts_mysqli;
413 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
414 if (is_null($li)) throw new Exception("Cannot execute mysql_set_charset(). No valid connection to server.");
415
416 return $li->set_charset($charset);
417 }
418
419 // Zeigt den momentanen Serverstatus an
420 function mysql_stat($link_identifier=NULL) {
421 global $vts_mysqli;
422 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
423 if (is_null($li)) throw new Exception("Cannot execute mysql_stat(). No valid connection to server.");
424
425 return $li->stat();
426 }
427
428 // Liefert den Namen einer Tabelle
429 function mysql_tablename($result, $i) {
430 if (!$result) {
431 $err = mysql_error();
432 throw new Exception("Called mysql_tablename() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
433 }
434 $result->data_seek($i);
435 return mysql_fetch_array($result)[0];
436 }
437
438 // Zeigt die aktuelle Thread ID an
439 function mysql_thread_id($link_identifier=NULL) {
440 global $vts_mysqli;
441 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
442 if (is_null($li)) throw new Exception("Cannot execute mysql_thread_id(). No valid connection to server.");
443
444 return $li->thread_id;
445 }
446
447 // Sendet eine SQL Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern
448 function mysql_unbuffered_query($query, $link_identifier=NULL) {
449 global $vts_mysqli;
450 $li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
451 if (is_null($li)) throw new Exception("Cannot execute mysql_unbuffered_query(). No valid connection to server.");
452
453 // http://php.net/manual/de/mysqlinfo.concepts.buffering.php
454 // https://stackoverflow.com/questions/1982016/unbuffered-query-with-mysqli?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
455 $li->real_query($query);
456 $li->use_result();
457 }
458