332 lines
9.5 KiB
PHP
Executable File
332 lines
9.5 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Fichier de compatibilité MySQL (ext/mysql) → mysqli
|
|
*
|
|
* Ce fichier fournit un shim pour remplacer les fonctions mysql_* obsolètes
|
|
* supprimées en PHP 8 par leurs équivalents mysqli_.
|
|
*
|
|
* IMPORTANT : $db_connection doit être une connexion mysqli globale
|
|
* créée par conf.php ou initialisée manuellement.
|
|
*/
|
|
|
|
if (!function_exists('mysql_connect')) {
|
|
function mysql_connect($host, $user, $password, $database = null, $port = null) {
|
|
global $db_connection;
|
|
|
|
// Si $db_connection existe déjà et est valide, la réutiliser
|
|
if (isset($db_connection) && is_object($db_connection)) {
|
|
// Vérifier si la connexion est encore active
|
|
$db_connection->query("SELECT 1");
|
|
return $db_connection;
|
|
}
|
|
|
|
// Utiliser les valeurs par défaut de conf.php si pas fournies
|
|
if (empty($host) || $host === '10.10.10.22') {
|
|
if (function_exists('get_defined_vars')) {
|
|
$vars = get_defined_vars();
|
|
if (isset($vars['db_port']) && $vars['db_port']) {
|
|
$port = $vars['db_port'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$p = $port ?: 3307;
|
|
$db_connection = @new mysqli($host, $user, $password, $database, $p);
|
|
|
|
if ($db_connection->connect_error) {
|
|
// Essayer le second serveur
|
|
if (isset($db_host2)) {
|
|
$p2 = $port ?: 3306;
|
|
$db_connection = @new mysqli($db_host2, $user, $password, $database, $p2);
|
|
}
|
|
}
|
|
|
|
if ($db_connection->connect_error) {
|
|
trigger_error("Warning: mysqli_connect failed: " . $db_connection->connect_error, E_WARNING);
|
|
}
|
|
|
|
return $db_connection;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_select_db')) {
|
|
function mysql_select_db($dbname, $link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_select_db($link, $dbname);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_query')) {
|
|
function mysql_query($query, $link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if (!$link || !($link instanceof mysqli)) {
|
|
return false;
|
|
}
|
|
$result = mysqli_real_query($link, $query);
|
|
if (!$result) {
|
|
return false;
|
|
}
|
|
return @mysqli_store_result($link);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_fetch_array')) {
|
|
function mysql_fetch_array($result, $result_type = MYSQLI_ASSOC) {
|
|
if ($result instanceof mysqli_result) {
|
|
return @mysqli_fetch_array($result, $result_type);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_fetch_assoc')) {
|
|
function mysql_fetch_assoc($result) {
|
|
if ($result instanceof mysqli_result) {
|
|
return @mysqli_fetch_assoc($result);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_fetch_object')) {
|
|
function mysql_fetch_object($result, $class_name = "stdClass", array $params = []) {
|
|
if ($result instanceof mysqli_result) {
|
|
if ($class_name === "stdClass") {
|
|
return @mysqli_fetch_object($result);
|
|
}
|
|
return @mysqli_fetch_object($result, $class_name, $params);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_fetch_row')) {
|
|
function mysql_fetch_row($result) {
|
|
if ($result instanceof mysqli_result) {
|
|
return @mysqli_fetch_row($result);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_num_rows')) {
|
|
function mysql_num_rows($result) {
|
|
if ($result instanceof mysqli_result) {
|
|
return @mysqli_num_rows($result);
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_numrows')) {
|
|
function mysql_numrows($result) {
|
|
return mysql_num_rows($result);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_affected_rows')) {
|
|
function mysql_affected_rows($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_affected_rows($link);
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_insert_id')) {
|
|
function mysql_insert_id($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_insert_id($link);
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_error')) {
|
|
function mysql_error($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_error($link);
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_errno')) {
|
|
function mysql_errno($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_errno($link);
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_result')) {
|
|
function mysql_result($result, $row = 0, $field = null) {
|
|
if (!$result instanceof mysqli_result) {
|
|
return false;
|
|
}
|
|
if (@mysqli_data_seek($result, $row) === false) {
|
|
return false;
|
|
}
|
|
$data = @mysqli_fetch_row($result);
|
|
if (!$data) {
|
|
return false;
|
|
}
|
|
if ($field === null) {
|
|
return $data[0];
|
|
}
|
|
if (is_int($field)) {
|
|
return isset($data[$field]) ? $data[$field] : false;
|
|
}
|
|
$fields = @mysqli_fetch_field($result);
|
|
if (!$fields) {
|
|
return false;
|
|
}
|
|
foreach ($data as $key => $value) {
|
|
if ($key === $field || $value === $field) {
|
|
return isset($data[$key]) ? $data[$key] : false;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_close')) {
|
|
function mysql_close($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
@mysqli_close($link);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_list_dbs')) {
|
|
function mysql_list_dbs($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_list_dbs($link);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_client_encoding')) {
|
|
function mysql_client_encoding($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_character_set_name($link);
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_ping')) {
|
|
function mysql_ping($link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_ping($link);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_free_result')) {
|
|
function mysql_free_result($result) {
|
|
if ($result instanceof mysqli_result) {
|
|
@mysqli_free_result($result);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mysql_real_escape_string')) {
|
|
function mysql_real_escape_string($string, $link = null) {
|
|
global $db_connection;
|
|
$link = $link ?: $db_connection;
|
|
if ($link instanceof mysqli) {
|
|
return @mysqli_real_escape_string($link, $string);
|
|
}
|
|
return addslashes($string);
|
|
}
|
|
}
|
|
|
|
// Définir les constantes nécessaires si manquantes
|
|
if (!defined('MYSQL_ASSOC')) {
|
|
define('MYSQL_ASSOC', MYSQLI_ASSOC);
|
|
}
|
|
if (!defined('MYSQL_NUM')) {
|
|
define('MYSQL_NUM', MYSQLI_NUM);
|
|
}
|
|
if (!defined('MYSQL_BOTH')) {
|
|
define('MYSQL_BOTH', MYSQLI_BOTH);
|
|
}
|
|
|
|
// ========================================
|
|
// Shims pour ereg() et ereg_replace()
|
|
// Supprimés en PHP 7.0, supprimés en PHP 8.0
|
|
// ========================================
|
|
|
|
if (!function_exists('ereg')) {
|
|
function ereg(...$args) {
|
|
// Support signatures:
|
|
// ereg(pattern, string) -> strpos for simple match
|
|
// ereg(pattern, string, &$regs) -> preg_match with capture
|
|
if (count($args) >= 3) {
|
|
$pattern = $args[0];
|
|
if ($pattern[0] === '"' || $pattern[0] === "'") {
|
|
$pattern = substr($pattern, 1, -1);
|
|
}
|
|
return preg_match('/' . (is_string($args[0]) ? $pattern : ''), $args[1], $args[2]) > 0;
|
|
}
|
|
if (count($args) >= 2) {
|
|
$pattern = $args[0];
|
|
if ($pattern[0] === '"' || $pattern[0] === "'") {
|
|
$pattern = substr($pattern, 1, -1);
|
|
}
|
|
return strpos($args[1], $pattern) !== false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('ereg_replace')) {
|
|
function ereg_replace($pattern, $replacement, $string) {
|
|
// Strip surrounding quotes if present
|
|
if (($pattern[0] === '"' && substr($pattern, -1) === '"') ||
|
|
($pattern[0] === "'" && substr($pattern, -1) === "'")) {
|
|
$pattern = substr($pattern, 1, -1);
|
|
}
|
|
return preg_replace('/' . $pattern . '/', $replacement, $string);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('split')) {
|
|
function split($pattern, $string, $limit = -1) {
|
|
if (($pattern[0] === '"' && substr($pattern, -1) === '"') ||
|
|
($pattern[0] === "'" && substr($pattern, -1) === "'")) {
|
|
$pattern = substr($pattern, 1, -1);
|
|
}
|
|
return preg_split('/' . $pattern . '/', $string, $limit);
|
|
}
|
|
}
|