Nettoyage
This commit is contained in:
parent
e26168fd7e
commit
0456b84f96
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001 Fabien Seisen <seisen@linuxfr.org>
|
/* Copyright (C) 2001 Fabien Seisen <seisen@linuxfr.org>
|
||||||
* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
*
|
*
|
||||||
@ -23,309 +23,315 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/lib/mysql.lib.php
|
\file htdocs/lib/mysql.lib.php
|
||||||
\brief Fichier de la classe permettant de gérer une base mysql
|
\brief Fichier de la classe permettant de gérer une base mysql
|
||||||
\author Fabien Seisen
|
\author Fabien Seisen
|
||||||
\author Rodolphe Quiedeville.
|
\author Rodolphe Quiedeville.
|
||||||
\author Laurent Destailleur.
|
\author Laurent Destailleur.
|
||||||
\version $Revision$
|
\version $Revision$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\class DoliDb
|
\class DoliDb
|
||||||
\brief Classe permettant de gérér la database de dolibarr
|
\brief Classe de gestion de la database de dolibarr
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class DoliDb
|
class DoliDb
|
||||||
{
|
{
|
||||||
var $db; // Handler de base
|
//! Handler de base
|
||||||
var $type='mysql'; // Nom du gestionnaire
|
var $db;
|
||||||
var $forcecharset='latin1';
|
//! Nom du gestionnaire
|
||||||
var $forcecollate='latin1_swedish_ci';
|
var $type='mysql';
|
||||||
var $versionmin=array(3,1,0); // Version min database
|
//! Charset
|
||||||
|
var $forcecharset='latin1';
|
||||||
|
//! Collate
|
||||||
|
var $forcecollate='latin1_swedish_ci';
|
||||||
|
//! Version min database
|
||||||
|
var $versionmin=array(3,1,0);
|
||||||
|
//! Resultset de la dernière requete
|
||||||
|
var $results;
|
||||||
|
//! 1 si connecté, 0 sinon
|
||||||
|
var $connected;
|
||||||
|
//! 1 si base sélectionné, 0 sinon
|
||||||
|
var $database_selected;
|
||||||
|
//! Nom base sélectionnée
|
||||||
|
var $database_name;
|
||||||
|
//! 1 si une transaction est en cours, 0 sinon
|
||||||
|
var $transaction_opened;
|
||||||
|
//! Derniere requete exécutée
|
||||||
|
var $lastquery;
|
||||||
|
//! Derniere requete exécutée avec echec
|
||||||
|
var $lastqueryerror;
|
||||||
|
//! Message erreur mysql
|
||||||
|
var $lasterror;
|
||||||
|
//! Message erreur mysql
|
||||||
|
var $lasterrno;
|
||||||
|
|
||||||
var $results; // Resultset de la dernière requete
|
var $ok;
|
||||||
|
var $error;
|
||||||
var $connected; // 1 si connecté, 0 sinon
|
|
||||||
var $database_selected; // 1 si base sélectionné, 0 sinon
|
|
||||||
var $database_name; // Nom base sélectionnée
|
|
||||||
var $transaction_opened; // 1 si une transaction est en cours, 0 sinon
|
|
||||||
var $lastquery; // Derniere requete exécutée
|
|
||||||
var $lastqueryerror; // Derniere requete exécutée avec echec
|
|
||||||
var $lasterror; // Message erreur mysql
|
|
||||||
var $lasterrno; // Message erreur mysql
|
|
||||||
|
|
||||||
var $ok;
|
|
||||||
var $error;
|
|
||||||
|
|
||||||
|
|
||||||
// Constantes pour conversion code erreur MySql en code erreur générique
|
// Constantes pour conversion code erreur MySql en code erreur générique
|
||||||
var $errorcode_map = array(
|
var $errorcode_map = array(
|
||||||
1004 => 'DB_ERROR_CANNOT_CREATE',
|
1004 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
1005 => 'DB_ERROR_CANNOT_CREATE',
|
1005 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
1006 => 'DB_ERROR_CANNOT_CREATE',
|
1006 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
1007 => 'DB_ERROR_ALREADY_EXISTS',
|
1007 => 'DB_ERROR_ALREADY_EXISTS',
|
||||||
1008 => 'DB_ERROR_CANNOT_DROP',
|
1008 => 'DB_ERROR_CANNOT_DROP',
|
||||||
1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP',
|
1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP',
|
||||||
1046 => 'DB_ERROR_NODBSELECTED',
|
1046 => 'DB_ERROR_NODBSELECTED',
|
||||||
1048 => 'DB_ERROR_CONSTRAINT',
|
1048 => 'DB_ERROR_CONSTRAINT',
|
||||||
1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS',
|
1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS',
|
||||||
1051 => 'DB_ERROR_NOSUCHTABLE',
|
1051 => 'DB_ERROR_NOSUCHTABLE',
|
||||||
1054 => 'DB_ERROR_NOSUCHFIELD',
|
1054 => 'DB_ERROR_NOSUCHFIELD',
|
||||||
1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS',
|
1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS',
|
||||||
1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS',
|
1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS',
|
||||||
1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS',
|
1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS',
|
||||||
1064 => 'DB_ERROR_SYNTAX',
|
1064 => 'DB_ERROR_SYNTAX',
|
||||||
1068 => 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS',
|
1068 => 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS',
|
||||||
1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY',
|
1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY',
|
||||||
1091 => 'DB_ERROR_NOSUCHFIELD',
|
1091 => 'DB_ERROR_NOSUCHFIELD',
|
||||||
1100 => 'DB_ERROR_NOT_LOCKED',
|
1100 => 'DB_ERROR_NOT_LOCKED',
|
||||||
1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW',
|
1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW',
|
||||||
1146 => 'DB_ERROR_NOSUCHTABLE',
|
1146 => 'DB_ERROR_NOSUCHTABLE',
|
||||||
1216 => 'DB_ERROR_NO_PARENT',
|
1216 => 'DB_ERROR_NO_PARENT',
|
||||||
1217 => 'DB_ERROR_CHILD_EXISTS'
|
1217 => 'DB_ERROR_CHILD_EXISTS'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Ouverture d'une connection vers le serveur et éventuellement une database.
|
\brief Ouverture d'une connection vers le serveur et éventuellement une database.
|
||||||
\param type Type de base de données (mysql ou pgsql)
|
\param type Type de base de données (mysql ou pgsql)
|
||||||
\param host Addresse de la base de données
|
\param host Addresse de la base de données
|
||||||
\param user Nom de l'utilisateur autorisé
|
\param user Nom de l'utilisateur autorisé
|
||||||
\param pass Mot de passe
|
\param pass Mot de passe
|
||||||
\param name Nom de la database
|
\param name Nom de la database
|
||||||
\param newlink ???
|
\param newlink ???
|
||||||
\return int 1 en cas de succès, 0 sinon
|
\return int 1 en cas de succès, 0 sinon
|
||||||
*/
|
*/
|
||||||
function DoliDb($type='mysql', $host, $user, $pass, $name='', $newlink=0)
|
function DoliDb($type='mysql', $host, $user, $pass, $name='', $newlink=0)
|
||||||
{
|
{
|
||||||
global $conf,$langs;
|
global $conf,$langs;
|
||||||
$this->transaction_opened=0;
|
$this->transaction_opened=0;
|
||||||
|
|
||||||
//print "Name DB: $host,$user,$pass,$name<br>";
|
if (! function_exists("mysql_connect"))
|
||||||
|
{
|
||||||
|
$this->connected = 0;
|
||||||
|
$this->ok = 0;
|
||||||
|
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP";
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions for using Mysql driver are not available in this version of PHP");
|
||||||
|
return $this->ok;
|
||||||
|
}
|
||||||
|
|
||||||
if (! function_exists("mysql_connect"))
|
if (! $host)
|
||||||
{
|
{
|
||||||
$this->connected = 0;
|
$this->connected = 0;
|
||||||
$this->ok = 0;
|
$this->ok = 0;
|
||||||
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP";
|
$this->error=$langs->trans("ErrorWrongHostParameter");
|
||||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions for using Mysql driver are not available in this version of PHP");
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect, wrong host parameters");
|
||||||
return $this->ok;
|
return $this->ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $host)
|
// Essai connexion serveur
|
||||||
{
|
$this->db = $this->connect($host, $user, $pass, $name, $newlink);
|
||||||
$this->connected = 0;
|
if ($this->db)
|
||||||
$this->ok = 0;
|
{
|
||||||
$this->error=$langs->trans("ErrorWrongHostParameter");
|
// Si client connecté avec charset different de celui de la base Dolibarr
|
||||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect, wrong host parameters");
|
// (La base Dolibarr a été forcée en this->forcecharset à l'install)
|
||||||
return $this->ok;
|
if (mysql_client_encoding ( $this->db ) != $this->forcecharset)
|
||||||
}
|
{
|
||||||
|
$this->query("SET NAMES '".$this->forcecharset."'", $this->db);
|
||||||
|
}
|
||||||
|
$this->connected = 1;
|
||||||
|
$this->ok = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// host, login ou password incorrect
|
||||||
|
$this->connected = 0;
|
||||||
|
$this->ok = 0;
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect mysql_error=".mysql_error());
|
||||||
|
}
|
||||||
|
|
||||||
// Essai connexion serveur
|
// Si connexion serveur ok et si connexion base demandée, on essaie connexion base
|
||||||
$this->db = $this->connect($host, $user, $pass, $name, $newlink);
|
if ($this->connected && $name)
|
||||||
if ($this->db)
|
{
|
||||||
{
|
if ($this->select_db($name))
|
||||||
// Si client connecté avec charset different de celui de la base Dolibarr
|
{
|
||||||
// (La base Dolibarr a été forcée en this->forcecharset à l'install)
|
$this->database_selected = 1;
|
||||||
if (mysql_client_encoding ( $this->db ) != $this->forcecharset)
|
$this->database_name = $name;
|
||||||
{
|
$this->ok = 1;
|
||||||
$this->query("SET NAMES '".$this->forcecharset."'", $this->db);
|
}
|
||||||
}
|
else
|
||||||
$this->connected = 1;
|
{
|
||||||
$this->ok = 1;
|
$this->database_selected = 0;
|
||||||
}
|
$this->database_name = '';
|
||||||
else
|
$this->ok = 0;
|
||||||
{
|
$this->error=$this->error();
|
||||||
// host, login ou password incorrect
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
|
||||||
$this->connected = 0;
|
}
|
||||||
$this->ok = 0;
|
}
|
||||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect mysql_error=".mysql_error());
|
else
|
||||||
}
|
{
|
||||||
|
// Pas de selection de base demandée, ok ou ko
|
||||||
|
$this->database_selected = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Si connexion serveur ok et si connexion base demandée, on essaie connexion base
|
return $this->ok;
|
||||||
if ($this->connected && $name)
|
}
|
||||||
{
|
|
||||||
if ($this->select_db($name))
|
|
||||||
{
|
|
||||||
$this->database_selected = 1;
|
|
||||||
$this->database_name = $name;
|
|
||||||
$this->ok = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->database_selected = 0;
|
|
||||||
$this->database_name = '';
|
|
||||||
$this->ok = 0;
|
|
||||||
$this->error=$this->error();
|
|
||||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Pas de selection de base demandée, ok ou ko
|
|
||||||
$this->database_selected = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Selectionne une database.
|
\brief Selectionne une database.
|
||||||
\param database Nom de la database
|
\param database Nom de la database
|
||||||
\return boolean true si ok, false si ko
|
\return boolean true si ok, false si ko
|
||||||
*/
|
*/
|
||||||
function select_db($database)
|
function select_db($database)
|
||||||
{
|
{
|
||||||
return mysql_select_db($database, $this->db);
|
return mysql_select_db($database, $this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Connection vers le serveur
|
||||||
|
\param host addresse de la base de données
|
||||||
|
\param login nom de l'utilisateur autoris
|
||||||
|
\param passwd mot de passe
|
||||||
|
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||||
|
\return resource handler d'accès à la base
|
||||||
|
\seealso close
|
||||||
|
*/
|
||||||
|
function connect($host, $login, $passwd, $name)
|
||||||
|
{
|
||||||
|
dolibarr_syslog("DoliDB::connect host=$host, login=$login, passwd=$passwd, name=$name");
|
||||||
|
$this->db = @mysql_connect($host, $login, $passwd);
|
||||||
|
return $this->db;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie la version du serveur
|
||||||
|
\return string Chaine version
|
||||||
|
*/
|
||||||
|
function getVersion()
|
||||||
|
{
|
||||||
|
return mysql_get_server_info($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Connection vers le serveur
|
\brief Renvoie la version du serveur dans un tableau
|
||||||
\param host addresse de la base de données
|
\return array Tableau de chaque niveau de version
|
||||||
\param login nom de l'utilisateur autoris
|
*/
|
||||||
\param passwd mot de passe
|
function getVersionArray()
|
||||||
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
{
|
||||||
\return resource handler d'accès à la base
|
return split('\.',$this->getVersion());
|
||||||
\seealso close
|
}
|
||||||
*/
|
|
||||||
function connect($host, $login, $passwd, $name)
|
|
||||||
{
|
|
||||||
dolibarr_syslog("DoliDB::connect host=$host, login=$login, passwd=$passwd, name=$name");
|
|
||||||
$this->db = @mysql_connect($host, $login, $passwd);
|
|
||||||
//print "Resultat fonction connect: ".$this->db." - mysql_error=".mysql_error();
|
|
||||||
return $this->db;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie la version du serveur
|
\brief Fermeture d'une connection vers une database.
|
||||||
\return string Chaine version
|
\return resource
|
||||||
*/
|
\seealso connect
|
||||||
function getVersion()
|
*/
|
||||||
{
|
function close()
|
||||||
// $resql=$this->query('SELECT VERSION()');
|
{
|
||||||
// $row=$this->fetch_row($resql);
|
return mysql_close($this->db);
|
||||||
// return $row[0];
|
}
|
||||||
return mysql_get_server_info($this->db);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie la version du serveur dans un tableau
|
\brief Debut d'une transaction.
|
||||||
\return array Tableau de chaque niveau de version
|
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
|
||||||
*/
|
*/
|
||||||
function getVersionArray()
|
function begin()
|
||||||
{
|
{
|
||||||
return split('\.',$this->getVersion());
|
if (! $this->transaction_opened)
|
||||||
}
|
{
|
||||||
|
$ret=$this->query("BEGIN");
|
||||||
|
if ($ret) $this->transaction_opened++;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened++;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Validation d'une transaction
|
||||||
|
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||||
|
*/
|
||||||
|
function commit()
|
||||||
|
{
|
||||||
|
if ($this->transaction_opened<=1)
|
||||||
|
{
|
||||||
|
$ret=$this->query("COMMIT");
|
||||||
|
if ($ret) $this->transaction_opened=0;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened--;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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
|
||||||
|
*/
|
||||||
|
function rollback()
|
||||||
|
{
|
||||||
|
dolibarr_syslog("ROLLBACK ".$this->transaction_opened, LOG_ERR);
|
||||||
|
|
||||||
/**
|
if ($this->transaction_opened<=1)
|
||||||
\brief Fermeture d'une connection vers une database.
|
{
|
||||||
\return resource
|
$ret=$this->query("ROLLBACK");
|
||||||
\seealso connect
|
$this->transaction_opened=0;
|
||||||
*/
|
|
||||||
function close()
|
|
||||||
{
|
|
||||||
return mysql_close($this->db);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened--;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Debut d'une transaction.
|
\brief Effectue une requete et renvoi le resultset de réponse de la base
|
||||||
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
|
\param query Contenu de la query
|
||||||
*/
|
\return resource Resultset de la reponse
|
||||||
function begin()
|
*/
|
||||||
{
|
function query($query)
|
||||||
if (! $this->transaction_opened)
|
{
|
||||||
{
|
$query = trim($query);
|
||||||
$ret=$this->query("BEGIN");
|
|
||||||
if ($ret) $this->transaction_opened++;
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->transaction_opened++;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
if (! $this->database_name)
|
||||||
\brief Validation d'une transaction
|
{
|
||||||
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
// Ordre SQL ne nécessitant pas de connexion à une base (exemple: CREATE DATABASE)
|
||||||
*/
|
$ret = mysql_query($query, $this->db);
|
||||||
function commit()
|
}
|
||||||
{
|
else
|
||||||
if ($this->transaction_opened<=1)
|
{
|
||||||
{
|
$ret = mysql_db_query($this->database_name, $query, $this->db);
|
||||||
$ret=$this->query("COMMIT");
|
}
|
||||||
if ($ret) $this->transaction_opened=0;
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->transaction_opened--;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||||
\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
|
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||||
*/
|
if (! $ret)
|
||||||
function rollback()
|
{
|
||||||
{
|
$this->lastqueryerror = $query;
|
||||||
if ($this->transaction_opened<=1)
|
$this->lasterror = $this->error();
|
||||||
{
|
$this->lasterrno = $this->errno();
|
||||||
$ret=$this->query("ROLLBACK");
|
}
|
||||||
$this->transaction_opened=0;
|
$this->lastquery=$query;
|
||||||
return $ret;
|
$this->results = $ret;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->transaction_opened--;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
return $ret;
|
||||||
\brief Effectue une requete et renvoi le resultset de réponse de la base
|
|
||||||
\param query Contenu de la query
|
|
||||||
\return resource Resultset de la reponse
|
|
||||||
*/
|
|
||||||
function query($query)
|
|
||||||
{
|
|
||||||
$query = trim($query);
|
|
||||||
|
|
||||||
if (! $this->database_name)
|
|
||||||
{
|
|
||||||
// Ordre SQL ne nécessitant pas de connexion à une base (exemple: CREATE DATABASE)
|
|
||||||
$ret = mysql_query($query, $this->db);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$ret = mysql_db_query($this->database_name, $query, $this->db);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
|
||||||
{
|
|
||||||
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
|
||||||
if (! $ret)
|
|
||||||
{
|
|
||||||
$this->lastqueryerror = $query;
|
|
||||||
$this->lasterror = $this->error();
|
|
||||||
$this->lasterrno = $this->errno();
|
|
||||||
}
|
|
||||||
$this->lastquery=$query;
|
|
||||||
$this->results = $ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -541,88 +547,87 @@ class DoliDb
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Next function are not required. Only minor features use them.
|
// Next function are not required. Only minor features use them.
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie l'id de la connection
|
\brief Renvoie l'id de la connection
|
||||||
\return string Id connection
|
\return string Id connection
|
||||||
*/
|
*/
|
||||||
function getConnectId()
|
function getConnectId()
|
||||||
{
|
{
|
||||||
$resql=$this->query('SELECT CONNECTION_ID()');
|
$resql=$this->query('SELECT CONNECTION_ID()');
|
||||||
$row=$this->fetch_row($resql);
|
$row=$this->fetch_row($resql);
|
||||||
return $row[0];
|
return $row[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie la commande sql qui donne les droits à user sur toutes les tables
|
\brief Renvoie la commande sql qui donne les droits à user sur toutes les tables
|
||||||
\param databaseuser User à autoriser
|
\param databaseuser User à autoriser
|
||||||
\return string Requete sql
|
\return string Requete sql
|
||||||
*/
|
*/
|
||||||
function getGrantForUserQuery($databaseuser)
|
function getGrantForUserQuery($databaseuser)
|
||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Retourne le dsn pear
|
\brief Retourne le dsn pear
|
||||||
\return dsn
|
\return dsn
|
||||||
*/
|
*/
|
||||||
function getDSN($db_type,$db_user,$db_pass,$db_host,$db_name)
|
function getDSN($db_type,$db_user,$db_pass,$db_host,$db_name)
|
||||||
{
|
{
|
||||||
return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
|
return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Création d'une nouvelle base de donnée
|
\brief Création d'une nouvelle base de donnée
|
||||||
\param database nom de la database à créer
|
\param database nom de la database à créer
|
||||||
\return resource resource définie si ok, null si ko
|
\return resource resource définie si ok, null si ko
|
||||||
\remarks Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
|
\remarks Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
|
||||||
On force creation de la base avec le charset forcecharset
|
On force creation de la base avec le charset forcecharset
|
||||||
*/
|
*/
|
||||||
function DDLCreateDb($database)
|
function DDLCreateDb($database)
|
||||||
{
|
{
|
||||||
// ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci
|
// ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci
|
||||||
$sql = 'CREATE DATABASE '.$database;
|
$sql = 'CREATE DATABASE '.$database;
|
||||||
$sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
|
$sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
|
||||||
$ret=$this->query($sql);
|
$ret=$this->query($sql);
|
||||||
if (! $ret)
|
if (! $ret)
|
||||||
{
|
{
|
||||||
// On réessaie pour compatibilité avec Mysql < 5.0
|
// On réessaie pour compatibilité avec Mysql < 5.0
|
||||||
$sql = 'CREATE DATABASE '.$database;
|
$sql = 'CREATE DATABASE '.$database;
|
||||||
$ret=$this->query($sql);
|
$ret=$this->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
//print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysql_error($this->db);
|
return $ret;
|
||||||
return $ret;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Liste des tables dans une database.
|
\brief Liste des tables dans une database.
|
||||||
\param database Nom de la database
|
\param database Nom de la database
|
||||||
\return resource
|
\return resource
|
||||||
*/
|
*/
|
||||||
function DDLListTables($database)
|
function DDLListTables($database)
|
||||||
{
|
{
|
||||||
$this->results = mysql_list_tables($database, $this->db);
|
$this->results = mysql_list_tables($database, $this->db);
|
||||||
return $this->results;
|
return $this->results;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Crée une table
|
\brief Crée une table
|
||||||
\param table Nom de la table
|
\param table Nom de la table
|
||||||
\param fields Tableau associatif [nom champ][tableau des descriptions]
|
\param fields Tableau associatif [nom champ][tableau des descriptions]
|
||||||
\param primary_key Nom du champ qui sera la clef primaire
|
\param primary_key Nom du champ qui sera la clef primaire
|
||||||
\param unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur
|
\param unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur
|
||||||
\param fulltext Tableau des Nom de champs qui seront indexés en fulltext
|
\param fulltext Tableau des Nom de champs qui seront indexés en fulltext
|
||||||
\param key Tableau des champs clés noms => valeur
|
\param key Tableau des champs clés noms => valeur
|
||||||
\param type Type de la table
|
\param type Type de la table
|
||||||
\return int <0 si KO, >=0 si OK
|
\return int <0 si KO, >=0 si OK
|
||||||
*/
|
*/
|
||||||
function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
|
function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
|
||||||
{
|
{
|
||||||
// clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
// clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user