This commit is contained in:
Laurent Destailleur 2006-03-14 20:53:51 +00:00
parent 2319e909e3
commit 8df2213536
2 changed files with 34 additions and 29 deletions

View File

@ -39,17 +39,18 @@
class DoliDb class DoliDb
{ {
var $db; // Handler de base var $db; // Handler de base
var $type='mysql'; // Nom du gestionnaire var $type='mysql'; // Nom du gestionnaire
var $results; // Resultset de la dernière requete var $results; // Resultset de la dernière requete
var $connected; // 1 si connecté, 0 sinon var $connected; // 1 si connecté, 0 sinon
var $database_selected; // 1 si base sélectionné, 0 sinon var $database_selected; // 1 si base sélectionné, 0 sinon
var $database_name; // Nom base sélectionnée var $database_name; // Nom base sélectionnée
var $transaction_opened; // 1 si une transaction est en cours, 0 sinon var $transaction_opened; // 1 si une transaction est en cours, 0 sinon
var $lastquery; var $lastquery;
var $lastqueryerror; // Ajout d'une variable en cas d'erreur
var $ok; var $ok;
var $error; var $error;
@ -421,7 +422,6 @@ class DoliDb
\param query Contenu de la query \param query Contenu de la query
\return resource Resultset de la reponse \return resource Resultset de la reponse
*/ */
function query($query) function query($query)
{ {
$query = trim($query); $query = trim($query);
@ -436,8 +436,10 @@ class DoliDb
$ret = mysql_db_query($this->database_name, $query, $this->db); $ret = mysql_db_query($this->database_name, $query, $this->db);
} }
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query)) { if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
{
// Si requete utilisateur, on la sauvegarde ainsi que son resultset // Si requete utilisateur, on la sauvegarde ainsi que son resultset
if (! $ret) $this->lastqueryerror = $query;
$this->lastquery=$query; $this->lastquery=$query;
$this->results = $ret; $this->results = $ret;
} }
@ -635,17 +637,24 @@ class DoliDb
\brief Renvoie la derniere requete soumise par la methode query() \brief Renvoie la derniere requete soumise par la methode query()
\return lastquery \return lastquery
*/ */
function lastquery() function lastquery()
{ {
return $this->lastquery; return $this->lastquery;
} }
/**
\brief Renvoie la derniere requete en erreur()
\return lastqueryerror
*/
function lastqueryerror()
{
return $this->lastqueryerror;
}
/** /**
\brief Renvoie le code erreur generique de l'operation precedente. \brief Renvoie le code erreur generique de l'operation precedente.
\return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...) \return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...)
*/ */
function errno() function errno()
{ {
if (! $this->connected) { if (! $this->connected) {

View File

@ -52,6 +52,7 @@ class DoliDb
var $database_name; // Nom base sélectionnée var $database_name; // Nom base sélectionnée
var $transaction_opened; // 1 si une transaction est en cours, 0 sinon var $transaction_opened; // 1 si une transaction est en cours, 0 sinon
var $lastquery; var $lastquery;
var $lastqueryerror; // Ajout d'une variable en cas d'erreur
var $ok; var $ok;
var $error; var $error;
@ -274,7 +275,6 @@ class DoliDb
\brief Debut d'une transaction. \brief Debut d'une transaction.
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur \return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
*/ */
function begin() function begin()
{ {
if (! $this->transaction_opened) if (! $this->transaction_opened)
@ -294,7 +294,6 @@ class DoliDb
\brief Validation d'une transaction \brief Validation d'une transaction
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur \return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
*/ */
function commit() function commit()
{ {
if ($this->transaction_opened==1) if ($this->transaction_opened==1)
@ -314,7 +313,6 @@ class DoliDb
\brief Annulation d'une transaction et retour aux anciennes valeurs \brief Annulation d'une transaction et retour aux anciennes valeurs
\return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur \return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur
*/ */
function rollback() function rollback()
{ {
if ($this->transaction_opened) if ($this->transaction_opened)
@ -334,14 +332,15 @@ class DoliDb
\param query Contenu de la query \param query Contenu de la query
\return resource Resultset de la reponse \return resource Resultset de la reponse
*/ */
function query($query) function query($query)
{ {
$query = trim($query); $query = trim($query);
$ret = pg_query($this->db, $query); $ret = pg_query($this->db, $query);
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query)) { if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
{
// Si requete utilisateur, on la sauvegarde ainsi que son resultset // Si requete utilisateur, on la sauvegarde ainsi que son resultset
if (! $ret) $this->lastqueryerror = $query;
$this->lastquery=$query; $this->lastquery=$query;
$this->results = $ret; $this->results = $ret;
} }
@ -355,7 +354,6 @@ class DoliDb
\param fieldname Nom du champ \param fieldname Nom du champ
\return resource \return resource
*/ */
function result($nb, $fieldname) function result($nb, $fieldname)
{ {
return pg_fetch_result($this->results, $nb, $fieldname); return pg_fetch_result($this->results, $nb, $fieldname);
@ -366,7 +364,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return resource \return resource
*/ */
function fetch_object($resultset=0) function fetch_object($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -379,7 +376,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return array \return array
*/ */
function fetch_array($resultset=0) function fetch_array($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -392,7 +388,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return array \return array
*/ */
function fetch_row($resultset=0) function fetch_row($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -405,7 +400,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return array \return array
*/ */
function fetch_field($resultset=0) function fetch_field($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -419,7 +413,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return int Nombre de lignes \return int Nombre de lignes
*/ */
function num_rows($resultset=0) function num_rows($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -433,7 +426,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return int Nombre de lignes \return int Nombre de lignes
*/ */
function affected_rows($resultset=0) function affected_rows($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -449,7 +441,6 @@ class DoliDb
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return int \return int
*/ */
function num_fields($resultset=0) function num_fields($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -461,7 +452,6 @@ class DoliDb
\brief Libère le dernier resultset utilisé sur cette connexion. \brief Libère le dernier resultset utilisé sur cette connexion.
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
*/ */
function free($resultset=0) function free($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
@ -477,7 +467,6 @@ class DoliDb
\param offset numéro de la ligne à partir de laquelle recupérer les lignes \param offset numéro de la ligne à partir de laquelle recupérer les lignes
\return string chaine exprimant la syntax sql de la limite \return string chaine exprimant la syntax sql de la limite
*/ */
function plimit($limit=0,$offset=0) function plimit($limit=0,$offset=0)
{ {
global $conf; global $conf;
@ -537,17 +526,24 @@ class DoliDb
\brief Renvoie la derniere requete soumise par la methode query() \brief Renvoie la derniere requete soumise par la methode query()
\return lastquery \return lastquery
*/ */
function lastquery() function lastquery()
{ {
return $this->lastquery; return $this->lastquery;
} }
/**
\brief Renvoie la derniere requete en erreur()
\return lastqueryerror
*/
function lastqueryerror()
{
return $this->lastqueryerror;
}
/** /**
\brief Renvoie le code erreur generique de l'operation precedente. \brief Renvoie le code erreur generique de l'operation precedente.
\return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...) \return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...)
*/ */
function errno() function errno()
{ {
static $error_regexps; static $error_regexps;