<?
//[Avertissement] : Veuillez ne pas modifier sans autorisation
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
//
// [Nom du fichier] : c_ora_db.inc
// [Fonction] : classe de fonctions publiques Oracle
// [Auteur] : Tian Hui
//
// [Date de dernière modification] : 2001/05/11[cxx]
// [Règles de définition des variables] : 'C_'=Type caractère,'I_'=Type entier,'N_'=Type nombre,'L_'=Type booléen,'A_'=Type tableau
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// ※db_logon() ouvre la connexion à la base de données
// ※db_query() sélection générale
// ※db_change() Fonction universelle pour les modifications de la base de données (insertion, suppression, mise à jour)
// ※db_insert() insert, appelle directement db_change()
// ※db_delete() delete, appelle directement db_change()
// ※db_update() mise à jour, appelle directement db_change()
// ※db_commit() soumission de transaction
// ※db_rollback() restauration de la transaction
// ※db_logoff() déconnecte la connexion à la base de données
//------------------------------------------------ ------------------------------------------
Classe c_ora_db
{
//------------------------------------------------ ------------------------------------------
// définition des variables
//------------------------------------------------ ------------------------------------------
var $C_user = "" //Nom d'utilisateur de la base de données
var $C_passwd = "" //Mot de passe de la base de données
var $C_db = ""; //nom de la base de données
var $I_linkID = 0; // Descripteur de connexion
var $I_stmtID = 0; // Descripteur de requête
var $color = "" //couleur globale
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nom de la fonction : db_logon()
// Fonction : Ouvrir la connexion à la base de données
// Paramètres : aucun
//Valeur renvoyée : handle de connexion (entier)
// Remarques : Aucune
//------------------------------------------------ ------------------------------------------
fonction db_logon()
{
$this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db);
if ($this->I_linkID == 0){AlertExit('Le lien vers la base de données a échoué, veuillez contacter le DBA !');}
retourner $this->I_linkID ;
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nom de la fonction : db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// Fonction : sélectionner
// Paramètre : instruction SQL $C_sql
// $A_define champs à lier. type de tableau
// $I_start commence à récupérer les enregistrements - 1 récupérera tous les enregistrements de la requête
// $I_end termine la récupération des enregistrements
//Valeur de retour : tableau à deux dimensions ($A_rs)
// Remarques : La valeur du champ correspondant est accessible via les nombres 0,1,2.... ou la valeur du champ correspondant est également accessible en interrogeant le nom du champ.
// Par exemple, le champ NOM du premier enregistrement est accessible via $A_rs[0][0] ou $A_rs[0]['NAME'] ou $A_rs[0]['name']
// $I_start, $I_end sont des paramètres utilisés avec la pagination.
//------------------------------------------------ ------------------------------------------
fonction db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
{
if (!$C_sql){AlertExit("Paramètres incomplets!");}//Vérifier les paramètres
//Détection de connexion
if ($this->I_linkID == 0){AlertExit('Le lien vers la base de données a échoué, veuillez contacter le DBA !');}
//Détection de format
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('Erreur de format SQL ! Veuillez contacter le programmeur');}
//Si le champ lié n'est pas spécifié, récupérez-le à partir de l'instruction SQL
si($A_define=="")
{
$A_Cur = exploser("select",$C_sql);
$A_Cur = exploser("from",$A_Cur[1]);
$A_define = exploser(",",$A_Cur[0]);
}
// Lier les champs de la table de base de données
if(gettype($A_define) == "array") //La colonne de requête est un tableau
{
pour($i=0;$i<count($A_define);$i++)
{
$A_define_up[$i] = trim(strtoupper($A_define[$i])); //Mise en majuscule et supprime les espaces
}
pour($i=0;$i<count($A_define_up);$i++)
{
OCIDefineByName($this -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]);
}
}
elseif(trim($A_define) <> "") //Il n'y a qu'une seule colonne de requête
{
$A_define_up = trim(strtoupper($A_define));
OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define);
}
//Exécuter l'instruction SQL liée
si(!OCIExecute($this -> I_stmtID))
{
echo "<font color=red><b>Erreur d'exécution :</b></font>Erreur SQL :<font color=red>$C_sql</font><br>";
renvoie faux ;
}
$lower = 0; // Renvoie la variable de contrôle d'indice de première dimension du tableau à deux dimensions
$cnt = 0; //Commencer à récupérer l'identifiant
//Obtenir des enregistrements
while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
{
//Récupère tous les enregistrements interrogés
si ($I_start == -1)
{
if (gettype($A_define) == "array") //La colonne de requête est un tableau
{
pour ($i=0;$i<count($A_define);$i++)
{
si ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i]; //Accès avec des chiffres
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //Utiliser un accès plus petit
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //Accès en majuscule
}
}
elseif (trim($A_define) <> "") //Il n'y a qu'une seule colonne de requête
{
si ($cur[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //Accès avec des chiffres
$A_rs[$lower][$A_define] = $$A_define; //Accès en minuscule
$A_rs[$lower][$A_define_up] = $$A_define; //Utiliser un accès plus large
}
$inférieur++; //Indice plus un
}
//Récupérer les enregistrements spécifiés (utilisés avec la pagination)
si ($I_start <> -1)
{
si ($cnt >= $I_start)
{
$cnt++;
si ($I_end - $I_start <> 0)
{
$I_end--;
if (gettype($A_define) == "tableau")
{
pour($i=0;$i<count($A_define_up);$i++)
{
si ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i]; //Accès avec des chiffres
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //Utiliser un accès plus petit
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //Accès en majuscule
}
}elseif(trim($A_define) <> "")
{
si ($cur[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //Accès avec des chiffres
$A_rs[$lower][$A_define] = $$A_define; //Utiliser un accès plus petit
$A_rs[$lower][$A_define_up] = $$A_define; //Accès en majuscule
}
$inférieur++;
}autre
{
break; //Si $I_end-$I_start=0, cela signifie récupérer l'enregistrement et sortir de la boucle while
}
}autre
{
$cnt++; //Si $cnt<$I_start,$cnt++
}
}
} //Fin de while
//Relâchez le handle et renvoyez les données de la requête (un tableau à deux dimensions)
OCIFreestatement($this -> I_stmtID);
renvoie $A_rs ;
} //Fin de la fonction
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_change($C_sql,$A_bind)
// Fonction : changement de base de données
// Paramètre : instruction SQL $C_sql
// Champs $A_bind à lier. type de tableau
//Valeur de retour : valeur booléenne
// Remarque : l'insertion, la suppression et la mise à jour sont courantes
//------------------------------------------------ ------------------------------------------
fonction db_change($C_sql,$A_bind="")
{
if (!$C_sql){AlertExit("Paramètres incomplets!");}//Vérifier les paramètres
//Détection de connexion
if($this -> I_linkID==""){ AlertExit("Notre base de données est occupée, veuillez vous reconnecter plus tard!");}
//Détection de format
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('Erreur de format SQL ! Veuillez contacter le programmeur');}
//Lier
if(gettype($A_bind) == "tableau")
{
pour($i=0;$i<count($A_bind);$i++)
{
global $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]); //Supprimer les caractères de barre oblique inverse
$$A_bind[$i] = str_replace("<?","< ?",$$A_bind[$i]); //Filtrer les balises PHP
}
pour($i=0;$i<count($A_bind);$i++){
OCIBindByName($this -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1);
}
}
elseif(trim($A_bind) <> "") //Pas un tableau, mais un caractère
{
$$A_bind global ;
$$A_bind = StripSlashes($$A_bind);
$$A_bind = str_replace("<?","< ?",$$A_bind //Filtrer les balises PHP);
OCIBindByName($this -> I_stmtID, ":$arrBind", &$$A_bind, -1);
}
//Exécuter et vérifier si l'opération réussit
if(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
{
echo "<font color=red><b>Erreur d'exécution :</b></font>Erreur SQL :<font color=red>$C_sql</font><br>";
renvoie faux ;
}
/*//Renvoie le nombre de lignes affectées
global $I_changenum;
$I_changenum = OCINumrows($this -> I_stmtID);*/
//Relâchez le handle et retournez la valeur
OCIFreeStatement($this -> I_stmtID);
renvoie vrai ;
}
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_delete($C_sql)
// Fonction : supprimer
// Paramètre : instruction SQL C_sql
//Valeur de retour : valeur booléenne
// Remarque : Cette fonction est uniquement destinée à une utilisation intuitive, appelant essentiellement db_change()
//------------------------------------------------ ------------------------------------------
fonction db_delete($C_sql)
{
return $this -> db_change($C_sql);
}
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_insert($C_sql,A_bind)
// Fonction : insérer
// Paramètre : instruction SQL C_sql
// Liaison A_bind
//Valeur de retour : valeur booléenne
// Remarque : Cette fonction est uniquement destinée à une utilisation intuitive, appelant essentiellement db_change()
//------------------------------------------------ ------------------------------------------
fonction db_insert($C_sql,$A_bind="")
{
return $this -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_update($C_sql,A_bind)
// Fonction : mise à jour
// Paramètre : instruction SQL C_sql
// Liaison A_bind
//Valeur de retour : valeur booléenne
// Remarque : Cette fonction est uniquement destinée à une utilisation intuitive, appelant essentiellement db_change()
//------------------------------------------------ ------------------------------------------
fonction db_update($C_sql,$A_bind="")
{
return $this -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_commit()
// Fonction : soumission de la transaction
// Paramètres : aucun
//Valeur de retour : valeur booléenne
// Remarques : Aucune
//------------------------------------------------ ------------------------------------------
fonction db_commit()
{
return (OCICommit($this->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------ -------------------------------------------------- ----------------------------------
// Nom de la fonction : db_rollback()
// Fonction : restauration de la transaction
// Paramètres : aucun
//Valeur de retour : valeur booléenne
// Remarques : Aucune
//------------------------------------------------ ------------------------------------------
fonction db_rollback()
{
return (OCIRollback($this->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nom de la fonction : db_logoff()
// Fonction : Déconnecter la connexion à la base de données
// Paramètres : aucun
//Valeur de retour : valeur booléenne
// Remarques : Aucune
//------------------------------------------------ ------------------------------------------
fonction db_logoff()
{
return (OCILogoff($this->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
}
?>