mrmaxpower | Hello J'ai un soucis sur la migration d'une classe mysql vers mysqli.
Historiquement (on parle d'un site internet php4/5 qui doit avoir bientôt 20ans ), j'ai une classe dédiée pour mysql, et je crée mon objet / j'ouvre ma connexion via :
$SQL = new mysql($_DB_USER, $_DB_PASS, $_DB_HOST, $_DB_BASE, $_DB_DEBUG); |
avec la variable DB_DEBUG qui me permettait d'afficher ou non la requête complète.
En version PHP5, j'avais ceci :
class mysql {
var $muser;
var $mpass ;
var $mhost ;
var $mdb ;
var $mdbug;
var $mport;
var $mconnect_id ;
var $mresultat ;
var $mnum_res ;
var $last_id_insert ;
var $sqlerreurno ;
function mysql($_DB_USER, $_DB_PASS, $_DB_HOST, $_DB_BASE, $_DB_DBG)
{
$this->muser = $_DB_USER;
$this->mpass = $_DB_PASS;
$this->mhost = $_DB_HOST;
$this->mdb = $_DB_BASE;
$this->mdbug = $_DB_DBG;
$this->mport = 3306;
$this->sqlerreurno = 0 ;
$this->connect();
}
function connect()
{
$this->mconnect_id = @mysql_pconnect($this->mhost.":".$this->mport,$this->muser,$this->mpass) or die("Problème de connexion à la base de données...<br />Il se peut que le problème soit dû à une surcharge des serveurs Free : retentez votre connexion d'ici une vingtaine de minutes." );
@mysql_select_db($this->mdb,$this->mconnect_id) or die( "Problème de connexion à la base de données... (selection de la base impossible)" );
}
function query($query)
{
if ($this->mdbug == '1') {
$this->mresultat = @mysql_query($query, $this->mconnect_id) or die(" Erreur de base de données - Exécution de requête impossible :<br />".$query."" ) ;
} else {
$this->mresultat = @mysql_query($query, $this->mconnect_id) or die(" Erreur de base de données - Exécution de requête impossible." ) ;
}
}
...
|
J'ai adapté en PHP8 (changement vers mysqli* et modification constructeur) :
class mysql {
var $muser;
var $mpass;
var $mhost;
var $mdb;
var $mdbug;
var $mport;
var $mconnect_id;
var $mresultat;
var $mnum_res;
var $last_id_insert;
var $sqlerreurno;
function __construct($_DB_USER, $_DB_PASS, $_DB_HOST, $_DB_BASE, $_DB_DBG)
{
$this->muser = $_DB_USER;
$this->mpass = $_DB_PASS;
$this->mhost = $_DB_HOST;
$this->mdb = $_DB_BASE;
$this->mdbug = $_DB_DBG;
$this->mport = 3306;
$this->sqlerreurno = 0 ;
$this->connect();
}
function connect()
{
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$this->mconnect_id = mysqli_connect($this->mhost, $this->muser, $this->mpass, $this->mdb) or die("Problème de connexion à la base de données...<br />" );
mysqli_set_charset($this->mconnect_id, 'utf8mb4');
$database = mysqli_select_db($this->mconnect_id, $this->mdb);
}
function query($query)
{
if ($this->mdbug == '1') {
$this->mresultat = mysqli_query($this->mconnect_id, $query) or die(" Erreur de base de données - Exécution de requête impossible :<br />".$query."" ) ;
} else {
$this->mresultat = mysqli_query($this->mconnect_id, $query) or die(" Erreur de base de données - Exécution de requête impossible." ) ;
}
...
|
Mais mes pages m'insultent Warning: Undefined property: mysql::$mdbug in inc/db.inc.php on line 46
J'ai déjà pas mal googlé/die&retry des choses (passage des variables en public), mais sans succès.
Que faire pour qu'au sein de mon objet je puisse accéder à mdbug ? J'arrive bien à accéder à mhost/muser/mpass/mdb pour la fonction connect, pourquoi pas pour la suite ? Merci aux courageux d'avoir lu jusqu'au bout  Message édité par mrmaxpower le 27-11-2024 à 00:15:24
|