X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fapp%2Fdata%2Fimpl%2Fmw_mysql.php;h=4f8e41d9702232581165eeadbf4bdd5d996ef821;hb=ed558d720ebf6985290c99297f5b1d2c86d1f60a;hp=0cff0c20bf5cccd3d1c6bc4fc0bae891be7c4115;hpb=36ed114046cbe3d72a3589230e9f306a54fcc79d;p=mtweb diff --git a/mw/app/data/impl/mw_mysql.php b/mw/app/data/impl/mw_mysql.php index 0cff0c2..4f8e41d 100644 --- a/mw/app/data/impl/mw_mysql.php +++ b/mw/app/data/impl/mw_mysql.php @@ -13,11 +13,15 @@ function extention_ok(&$env) { return $this->EXTENTION_OK; } - function mw_mysql($host, $base, $user, $password){ - $this->host = $host; - $this->base = $base; - $this->user = $user; - $this->password = $password; + function authentication_required() { return true; } + + function sgbd_name() { return "MySql"; } + + function mw_mysql($params = array()){ + $this->host = isset($params["host"]) ? $params["host"] : "localhost"; + $this->base = isset($params["base"]) ? $params["base"] : "mtweb"; + $this->user = isset($params["user"]) ? $params["user"] : ""; + $this->password = isset($params["password"]) ? $params["password"] : ""; $this->EXTENTION_OK = function_exists("mysql_connect"); } @@ -38,14 +42,61 @@ return $this->query("USE ".$db_name); } - function table_exists($table){ + function desc_table($table_name){ + $sql = "SELECT * from information_schema.columns where table_name='".$table_name."'"; + $rst = $this->query($sql); + $desc = array( + "name" => $table_name, + "attributs" => array() + ); + try{ + while($v_rst = $this->fetch_assoc($rst)){ + $desc["attributs"][$v_rst["COLUMN_NAME"]] = array( + "name" => $v_rst["COLUMN_NAME"], + "prymary_key" => $v_rst["COLUMN_KEY"] == "PRI" ? true : false, + "auto_increment" => $v_rst["EXTRA"] == "auto_increment" ? true : false + ); + } + $this->free_result($rst); + } + catch(Exception $e){ + throw new Exception($this->exception_out("Impossible de lire la description de la table")); + } + return $desc; + } + + function table_exists($table_name){ + if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password); + $EXISTS = false; + try{ + $rst = $this->query("SHOW TABLES"); + while($v_rst = mysql_fetch_row($rst)){ + if($v_rst[0] == $table_name){ + $EXISTS = true; + break; + } + } + $this->free_result($rst); + } + catch(Exception $e){ + throw new Exception($this->exception_out("Impossible de savoir si la table existe")); + } + return $EXISTS; + } + + function field_exists($table_name, $field_name){ if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password); - $rst = $this->query("SHOW TABLES"); - while($v_rst = mysql_fetch_array($rst)){ - if(strcmp($v_rst[0], $table) == 0) return true; - } - mysql_free_result($rst); - return false; + if(!($desc = $this->desc_table($table_name))){ + throw new Exception($this->exception_out("Impossible de lire la description de la table")); + } + $EXISTS = false; + foreach($desc["attributs"] as $attribut_name => $attribut){ + if($field_name == $attribut_name){ + $EXISTS = true; + break; + } + } + return $EXISTS; } function query($query_string){