par
jeff » 28 oct. 2005, 13:31
salut
je comprend pas ton probeleme vu que tu n'utilise pas de requete preparer??
sinon j'ai creer aussi une class similaire base sur celle de Daoud
si ca peut te donné des idées(elle ne gere pas les requete inbriqué n'y les transaction)
mysqdb
<?php
class Mysqldb
{
private $res;
private $conn;
public function __construct($serveur,$login,$pass,$db)
{
$this->conn=@mysql_connect($serveur,$login,$pass);
if($this->conn==false)
{
throw new MyException('Connexion au serveur MySQL impossible-<br/>serveur : '.$serveur.'<br/>login : '.$login.'<br/>pass : '.$pass.'<br/>base : '.$db);
}
else
{
try{
if(FALSE===mysql_select_db($db,$this->conn))
throw new MyException('Base introuvable sur le serveur MySQL');
}
catch(MyException $e)
{
$e->exceptionlog();
//echo 'message'.$e->getMessage().'<br />';
//echo 'code'.$e->getCode().'<br />';
}
}
}
public function execute($sql)
{
//echo $sql;
try
{
if(FALSE===($this->res=mysql_query($sql,$this->conn)))
throw new MyException($this->res.' n\'est pas un resultat valide<br />'.$sql);
}
catch(MyException $e)
{//echo $e->getMessage();
$e->exceptionlog();}
}
#retour une ligne sous forme de resultat
public function rows()
{
try
{
if(mysql_num_rows($this->res)>0)
return mysql_fetch_row($this->res);
else
throw new MyException('pas de resultat trouver pour :'.$this->res);
}
catch(MyException $e)
{//echo $e->getMessage();
$e->exceptionlog();
}
}
#retourne un nombre de ligne
public function num_rows()
{
return mysql_num_rows($this->res);
}
#retourne un tableau numerique
public function GetArray()
{
if(mysql_num_rows($this->res)>1)
{
while(false!=($rows=$this->rows()))
$tableau[]=$rows;
}
else
$tableau=$this->rows($this->res);
return $tableau;
}
# requete ne fonctionnant pas
public function GetArrayAssoc()
{
while($d=mysql_fetch_array($this->res))
{
$tab[]=$d;
}
return $tab;
}
#recupere le dernier id inserer
public function last_id()
{
return mysql_insert_id($this->conn);
}
#retourne le nombre d'enregistrement afecté
public function change_rows()
{
return mysql_affected_rows($this->conn);
}
public function __destruct()
{
mysql_close($this->conn);
}
/**
*Methode de pour documentation
*/
public static function GetInstance() {
if (empty(self::$Instance)) {
$class = __CLASS__;
self::$Instance = new $class;
}
return self::$Instance;
}
}
?>
classe sql
<?php
abstract class Sql
{
protected $db;
#requete select normal qui renvoi en tableau numerique
public function Select($param=null,$chaine=null)
{
$req='SELECT '.join(",",$this->Achamp);
$req.=' FROM '.join(",",$this->Atable);
if($param!=null)
{
$req.=' WHERE ('.join(') AND (',$param).') ';
}
else
$req.=' WHERE 1';
$req.=' ORDER BY '.$this->Achamp[0].' ASC ';
if($chaine!=null)
$req.=$chaine;
//echo $req;
$this->db->execute($req);
return $this->db->GetArray();
}
#requete select qui renvoi true si $val existe false sinon
public function SelectTrue($param=null,$chaine=null)
{
$req='SELECT '.join(",",$this->Achamp);
$req.=' FROM '.join(",",$this->Atable);
if($param!=null)
$req.=' WHERE ('.join(') AND (',$param).') ';
else
$req.=' WHERE 1';
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
$this->db->num_rows()===1?$flag=true:$flag=false;
return $flag;
}
public function Insert_auto($valeur,$chaine=null)
{
$req='INSERT INTO '.$this->Atable;
$erq.=' ('.join(",",$this->Achamp);
$req.=' VALUES ('.join(",",$valeur).')';
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
return $this->db->last_id();
}
public function Update($valeur,$chaine=null)
{
$req='UPDATE '.join(",",$this->Atable);
$req.=' SET'.join(",",$this->Achamp=$valeur);
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
return $this->db->change_rows();
}
public function delete($table,$param=null,$chaine='LIMIT 1')
{
$req='DELETE FROM '.$this->Atable;
assert($param!=null);
foreach($param as $cle => $val)
{
$cle==$row?$req.=$val:$req.=$val.' and ';
}
$req.=$chaine;
$this->db->execute($req);
}
public function Grant($arr)
{
$req='GRANT '.join(",",$arr['actions']);
$req.=' ON '.join(",",$arr['base']);
$req.=' TO '.$arr['log'].'@'.$arr['serveur'];
$req.='IDENTIFIED BY '.$arr['mdp'];
$this->db->execute($req);
}
}
?>
clasee dao
<?php
class DAO extends Sql
{
protected $db;
protected $ArrayTable;
protected $ArrayChamp;
public function __construct($db)
{
$this->db=$db;//permet d'appeler les methodes de treitement des données
}
public function SetVar($ArrayTable,$ArrayChamp)
{
$this->Atable=$ArrayTable;
$this->Achamp=$ArrayChamp;
}
public function __destruct()
{
}
}
?>
salut
je comprend pas ton probeleme vu que tu n'utilise pas de requete preparer??
sinon j'ai creer aussi une class similaire base sur celle de Daoud
si ca peut te donné des idées(elle ne gere pas les requete inbriqué n'y les transaction)
mysqdb
[php]<?php
class Mysqldb
{
private $res;
private $conn;
public function __construct($serveur,$login,$pass,$db)
{
$this->conn=@mysql_connect($serveur,$login,$pass);
if($this->conn==false)
{
throw new MyException('Connexion au serveur MySQL impossible-<br/>serveur : '.$serveur.'<br/>login : '.$login.'<br/>pass : '.$pass.'<br/>base : '.$db);
}
else
{
try{
if(FALSE===mysql_select_db($db,$this->conn))
throw new MyException('Base introuvable sur le serveur MySQL');
}
catch(MyException $e)
{
$e->exceptionlog();
//echo 'message'.$e->getMessage().'<br />';
//echo 'code'.$e->getCode().'<br />';
}
}
}
public function execute($sql)
{
//echo $sql;
try
{
if(FALSE===($this->res=mysql_query($sql,$this->conn)))
throw new MyException($this->res.' n\'est pas un resultat valide<br />'.$sql);
}
catch(MyException $e)
{//echo $e->getMessage();
$e->exceptionlog();}
}
#retour une ligne sous forme de resultat
public function rows()
{
try
{
if(mysql_num_rows($this->res)>0)
return mysql_fetch_row($this->res);
else
throw new MyException('pas de resultat trouver pour :'.$this->res);
}
catch(MyException $e)
{//echo $e->getMessage();
$e->exceptionlog();
}
}
#retourne un nombre de ligne
public function num_rows()
{
return mysql_num_rows($this->res);
}
#retourne un tableau numerique
public function GetArray()
{
if(mysql_num_rows($this->res)>1)
{
while(false!=($rows=$this->rows()))
$tableau[]=$rows;
}
else
$tableau=$this->rows($this->res);
return $tableau;
}
# requete ne fonctionnant pas
public function GetArrayAssoc()
{
while($d=mysql_fetch_array($this->res))
{
$tab[]=$d;
}
return $tab;
}
#recupere le dernier id inserer
public function last_id()
{
return mysql_insert_id($this->conn);
}
#retourne le nombre d'enregistrement afecté
public function change_rows()
{
return mysql_affected_rows($this->conn);
}
public function __destruct()
{
mysql_close($this->conn);
}
/**
*Methode de pour documentation
*/
public static function GetInstance() {
if (empty(self::$Instance)) {
$class = __CLASS__;
self::$Instance = new $class;
}
return self::$Instance;
}
}
?>[/php]
classe sql[php]<?php
abstract class Sql
{
protected $db;
#requete select normal qui renvoi en tableau numerique
public function Select($param=null,$chaine=null)
{
$req='SELECT '.join(",",$this->Achamp);
$req.=' FROM '.join(",",$this->Atable);
if($param!=null)
{
$req.=' WHERE ('.join(') AND (',$param).') ';
}
else
$req.=' WHERE 1';
$req.=' ORDER BY '.$this->Achamp[0].' ASC ';
if($chaine!=null)
$req.=$chaine;
//echo $req;
$this->db->execute($req);
return $this->db->GetArray();
}
#requete select qui renvoi true si $val existe false sinon
public function SelectTrue($param=null,$chaine=null)
{
$req='SELECT '.join(",",$this->Achamp);
$req.=' FROM '.join(",",$this->Atable);
if($param!=null)
$req.=' WHERE ('.join(') AND (',$param).') ';
else
$req.=' WHERE 1';
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
$this->db->num_rows()===1?$flag=true:$flag=false;
return $flag;
}
public function Insert_auto($valeur,$chaine=null)
{
$req='INSERT INTO '.$this->Atable;
$erq.=' ('.join(",",$this->Achamp);
$req.=' VALUES ('.join(",",$valeur).')';
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
return $this->db->last_id();
}
public function Update($valeur,$chaine=null)
{
$req='UPDATE '.join(",",$this->Atable);
$req.=' SET'.join(",",$this->Achamp=$valeur);
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
return $this->db->change_rows();
}
public function delete($table,$param=null,$chaine='LIMIT 1')
{
$req='DELETE FROM '.$this->Atable;
assert($param!=null);
foreach($param as $cle => $val)
{
$cle==$row?$req.=$val:$req.=$val.' and ';
}
$req.=$chaine;
$this->db->execute($req);
}
public function Grant($arr)
{
$req='GRANT '.join(",",$arr['actions']);
$req.=' ON '.join(",",$arr['base']);
$req.=' TO '.$arr['log'].'@'.$arr['serveur'];
$req.='IDENTIFIED BY '.$arr['mdp'];
$this->db->execute($req);
}
}
?>[/php]
clasee dao[php]<?php
class DAO extends Sql
{
protected $db;
protected $ArrayTable;
protected $ArrayChamp;
public function __construct($db)
{
$this->db=$db;//permet d'appeler les methodes de treitement des données
}
public function SetVar($ArrayTable,$ArrayChamp)
{
$this->Atable=$ArrayTable;
$this->Achamp=$ArrayChamp;
}
public function __destruct()
{
}
}
?>[/php]