host=MYSQL_HOST; else $this->host=$host; if ($user=='') $this->user=MYSQL_USER; else $this->user=$user; if ($password=='') $this->password=MYSQL_PASS; else $this->password=$password; if ($database=='') $this->database=MYSQL_DEFAULT_DB; else $this->database=$database; //if (defined(MYSQL_PORT)) $this->host = $this->host.':'.MYSQL_PORT; $this->host = $this->host.':53336'; $this->con_id = mysql_connect($this->host, $this->user, $this->password); if (!($this->con_id === false)) { if (mysql_select_db($this->database, $this->con_id) === false) { echo date('Y/m/d - H:i:s') ." - ERREUR ".mysql_errno()." : Connection à la base de données impossible !".EOL; echo date ('Y/m/d - H:i:s'). mysql_error(); die(); } } return mysql_query("SET NAMES 'utf8';", $this->con_id); } public function setCharSet($charSet) { return (mysql_query("SET CHARACTER SET $charSet;", $this->con_id)); } private function setDB() { return (mysql_query("USE $this->database;", $this->con_id)); } /** INSERTION d'un tableau dans une table. ** Les index doivent avoir les mêmes noms que les champs. ** @param string Table ** @param array Valeurs insérer ** @return int Dernière valeur de l'auto-incrément, 1 si pas d'auto-incrément et 0 si erreur **/ public function insert($table, $toAdd, $debug=false, $low_priority=false){ $this->setDB(); $fields = implode(array_keys($toAdd), '`,`'); foreach (array_values($toAdd) as $key=>$array_values) $tmp[$key]=checkaddslashes($array_values); $values = "'".implode(array_values($tmp), "','")."'"; # better $values = str_replace("'NULL'", 'NULL', $values); if ($low_priority) $query = 'INSERT DELAYED INTO `'.$table.'` (`'.$fields.'`) VALUES ('.$values.');'; else $query = 'INSERT INTO `'.$table.'` (`'.$fields.'`) VALUES ('.$values.');'; if ($debug) $tdeb=microtime(true); $res = mysql_query($query, $this->con_id); if ($res!==false) { if (mysql_insert_id()>0) $res=mysql_insert_id(); else $res=true; } if ($debug) $this->trace($query, $res, $tdeb); return $res; } public function update($table, $update, $where, $debug=false, $limit=0, $low_priority=false){ $this->setDB(); $fields = array_keys($update); $values = array_values($update); $i=0; if ($low_priority) $query='UPDATE LOW_PRIORITY `'.$table.'` SET '; else $query='UPDATE `'.$table.'` SET '; while(isset($fields[$i])){ if($i>0) { $query.=', '; } $query.=' `'.$fields[$i]."`='".checkaddslashes($values[$i])."'"; $i++; } $query = str_replace("'NULL'", 'NULL', $query); $query.=' WHERE '.$where; if ($limit>0) $query.=" LIMIT $limit"; if ($debug) $tdeb=microtime(true); $res=mysql_query($query, $this->con_id); if ($debug) $this->trace($query, $res, $tdeb); return $res; } public function delete($table, $where, $debug=false, $low_priority=false) { $this->setDB(); if ($low_priority) $query='DELETE LOW_PRIORITY QUICK FROM `'.$table.'` WHERE '.$where.' LIMIT 1;'; else $query='DELETE FROM `'.$table.'` WHERE '.$where.' LIMIT 1;'; if ($debug) $tdeb=microtime(true); $res=mysql_query($query, $this->con_id); if ($debug) $this->trace($query, $res, $tdeb); return $res; } public function select($table, $fields, $where, $debug=false, $assoc=MYSQL_BOTH, $huge=false) { $this->setDB(); if (mysql_select_db($this->database, $this->con_id) === false) { echo date('Y/m/d - H:i:s') ." - ERREUR ".mysql_errno()." : Connection à la base de données impossible !".EOL; echo date ('Y/m/d - H:i:s'). mysql_error(); die(); } $query="SELECT $fields FROM $table WHERE $where;"; if ($debug) $tdeb=microtime(true); $this->result=mysql_query($query, $this->con_id);// or die(mysql_error()); if (mysql_errno()) { $fpErr=fopen(LOG_PATH.'/sqlerror.log','a'); fwrite($fpErr, date('YmdHis'). ' - '.$query .EOL); fwrite($fpErr, date('YmdHis'). ' - '.mysql_errno() .' - '. mysql_error().EOL); return false; } // echo ; if (!$huge) { $tab=array(); while ($ligne = mysql_fetch_array($this->result, $assoc)) $tab[]=$ligne; if ($debug) $this->trace($query, sizeof($tab), $tdeb); return $tab; } else { $nbRows=mysql_num_rows($this->result); if ($debug) $this->trace($query, $nbRows, $tdeb); return $nbRows; } } public function fetch($assoc=MYSQL_BOTH) { return mysql_fetch_array($this->result, $assoc); } public function trace($query, $res='', $tdeb=-1) { if (!$fp=fopen(LOG_PATH.'/mysql_insert.log', 'a')) return false; $errnum=mysql_errno($this->con_id); if ($tdeb>-1) $duree=substr(''.microtime(true)-$tdeb, 0, 5); else $duree='N/D'; if (!fwrite($fp, date('Y/m/d - H:i:s') ." - $errnum - $res - $duree - $query\n")) return false; if (!fclose($fp)) return false; return true; } /** Exécute la requête passé en paramètre **/ public function query($query, $debug=false){ $this->setDB(); $this->result=mysql_query($query, $this->con_id); return $this->result; } /** Retourne le nombre de records de la dernière requête de sélection ** public function getNumRows() { return mysql_num_rows($this->con_id); } */ /** Retourne le libellé de la dernière erreur **/ public function getLastErrorMsg() { return mysql_error($this->con_id); } /** Retourne le numéro de la dernière erreur **/ public function getLastErrorNum() { return mysql_errno($this->con_id); } /** Retourne le libellé et le numéro de la dernière erreur **/ public function getLastError() { return mysql_error($this->con_id).' ('.mysql_errno($this->con_id).')'; } /** Retourne le nombre de lignes modifiées par la dernière requête **/ public function getAffectedRows() { return mysql_affected_rows($this->con_id); } /** Génère le fichier CSV pour la requete SQL ** ** @param string $query ** @param string $fileCsv ** @return bool */ public function exportCSV($query, $fileCsv, $sep=',', $eol=EOL) { $i=$c=0; $fp = fopen($fileCsv, 'w'); if (!$fp) return false; $res=$this->query($query); $nbLignes=mysql_num_rows($res); while ($ligne=$this->fetch(MYSQL_ASSOC)) { if ($i==0) { $nbCols=count($ligne); foreach ($ligne as $libCol=>$col) { $c++; if ($c<$nbCols) fwrite($fp, str_replace($sep,' ', $libCol).$sep); else fwrite($fp, str_replace($sep,' ', $libCol)); } fwrite($fp, $eol); } $c=0; foreach ($ligne as $libCol=>$col) { $c++; if ($c<$nbCols) fwrite($fp, str_replace($sep,' ', $col).$sep); else fwrite($fp, str_replace($sep,' ', $col)); } fwrite($fp, $eol); $i++; } fclose($fp); return $nbLignes;//$this->getAffectedRows(); } } ?>