18 function extention_ok(&$env) { return $this->EXTENTION_OK; }
20 function mw_pdo_mysql($host, $base, $user, $password){
24 $this->password = $password;
25 $this->EXTENTION_OK = (extension_loaded("pdo") && extension_loaded("pdo_mysql"));
28 function connect($host, $base, $user, $password){
30 $this->link = new PDO("mysql:host=".$host.";dbname=".$base, $user, $password);
31 $this->link->query("SET NAMES 'utf8'");
33 catch(PDOException $e){
34 throw new Exception($this->exception_out("Impossible d'etablir une connection au serveur"));
39 function select_db($db_name){
\r
40 $this->base = $db_name;
\r
41 if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);
\r
42 return $this->query("USE ".$db_name);
\r
45 function desc_table($table_name){
46 $sql = "SELECT * from information_schema.columns where table_name='".$table_name."'";
47 $rst = $this->query($sql);
49 "name" => $table_name,
50 "attributs" => array()
53 while($v_rst = $this->fetch_assoc($rst)){
\r
54 $desc["attributs"][$v_rst["COLUMN_NAME"]] = array(
55 "name" => $v_rst["COLUMN_NAME"],
56 "prymary_key" => $v_rst["COLUMN_KEY"] == "PRI" ? true : false,
57 "auto_increment" => $v_rst["EXTRA"] == "auto_increment" ? true : false
60 $this->free_result($rst);
63 throw new Exception($this->exception_out("Impossible de lire la description de la table"));
68 function table_exists($table_name){
69 if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);
\r
72 $rst = $this->query("SHOW TABLES");
73 while($v_rst = $rst->fetch()){
\r
74 if($v_rst[0] == $table_name){
79 $this->free_result($rst);
82 throw new Exception($this->exception_out("Impossible de savoir si la table existe"));
87 function field_exists($table_name, $field_name){
88 if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);
\r
89 if(!($desc = $this->desc_table($table_name))){
90 throw new Exception($this->exception_out("Impossible de lire la description de la table"));
93 foreach($desc["attributs"] as $attribut_name => $attribut){
94 if($field_name == $attribut_name){
102 function query($query_string){
\r
103 if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);
\r
104 if(!($result = $this->link->query($query_string))){
105 throw new Exception($this->exception_out("Syntaxe invalide dans une requete"));
110 function fetch_assoc($rst){
112 throw new Exception($this->exception_out("fetch_assoc sans connexion"));
115 throw new Exception($this->exception_out("fetch_assoc sans result handler"));
118 $tuple = $rst->fetch(PDO::FETCH_ASSOC);
121 throw new Exception($this->exception_out("erreur fetch_assoc"));
126 function insert_id(){
128 throw new Exception($this->exception_out("insert_id sans connexion"));
131 $id = $this->link->lastInsertId();
134 throw new Exception($this->exception_out("erreur insert_id"));
139 function free_result($rst){
141 throw new Exception($this->exception_out("free_result sans connexion"));
144 throw new Exception($this->exception_out("free_result sans result handler"));
151 throw new Exception($this->exception_out("erreur free_result"));
161 function exception_out($message){
\r
162 return "[erreur] mysql : ".$message;
\r