class mw_mysql{
- var $link;
-
- var $host;
- var $base;
- var $user;
- var $password;
+ public $link;
+ public $host;
+ public $base;
+ public $user;
+ public $password;
+ public $EXTENTION_OK;
+
+ public function __construct($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");
+ }
- var $EXTENTION_OK;
+ public function extention_ok(&$env){
+ return $this->EXTENTION_OK;
+ }
- function extention_ok(&$env) { return $this->EXTENTION_OK; }
+ public function authentication_required(){
+ return true;
+ }
- function mw_mysql($host, $base, $user, $password){
- $this->host = $host;
- $this->base = $base;
- $this->user = $user;
- $this->password = $password;
- $this->EXTENTION_OK = function_exists("mysql_connect");
+ public function sgbd_name(){
+ return "MySql";
}
- function connect($host, $base, $user, $password){
+ public function connect($host, $base, $user, $password){
$this->link = @mysql_connect($host, $user, $password);
if(!$this->link) throw new Exception($this->exception_out("Impossible d'etablir une connection au serveur"));
@mysql_query("SET NAMES 'utf8'");
return true;
}
- function select_db($db_name){\r
+ public function select_db($db_name){\r
$this->base = $db_name;\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
return $this->query("USE ".$db_name);\r
}
- function table_exists($table){\r
+ public 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)){\r
+ $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
+ );
+ }\r
+ $this->free_result($rst);
+ }
+ catch(Exception $e){
+ throw new Exception($this->exception_out("Impossible de lire la description de la table"));
+ }
+ return $desc;
+ }
+
+ public function table_exists($table_name){\r
+ if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
+ $EXISTS = false;
+ try{
+ $rst = $this->query("SHOW TABLES");
+ while($v_rst = mysql_fetch_row($rst)){\r
+ if($v_rst[0] == $table_name){
+ $EXISTS = true;
+ break;
+ }\r
+ }\r
+ $this->free_result($rst);
+ }
+ catch(Exception $e){
+ throw new Exception($this->exception_out("Impossible de savoir si la table existe"));
+ }
+ return $EXISTS;
+ }
+
+ public function field_exists($table_name, $field_name){
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
- $rst = $this->query("SHOW TABLES");\r
- while($v_rst = mysql_fetch_array($rst)){\r
- if(strcmp($v_rst[0], $table) == 0) return true;\r
- }\r
- mysql_free_result($rst);\r
- return false;\r
+ 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){\r
+ public function query($query_string){\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
$result = @mysql_query($query_string, $this->link);\r
if(!$result) throw new Exception($this->exception_out("Syntaxe invalide dans une requete"));\r
return $result;\r
}
- function fetch_assoc($rst){
+ public function fetch_assoc($rst){
if($this->link){
if($rst){
return mysql_fetch_assoc($rst);
else throw new Exception($this->exception_out("fetch_assoc sans connexion"));
}
- function insert_id(){
+ public function insert_id(){
if($this->link){
return mysql_insert_id($this->link);
}
else throw new Exception($this->exception_out("insert_id sans connexion"));
}
- function free_result($rst){
+ public function free_result($rst){
if($this->link){
if($rst){
return mysql_free_result($rst);
else throw new Exception($this->exception_out("free_result sans connexion"));
}
- function close(){
+ public function close(){
if($this->link) return mysql_close($this->link);
return true;
}
- function exception_out($message){\r
+ public function exception_out($message){\r
return "[erreur] mysql : ".$message;\r
}
}
-
-?>
\ No newline at end of file