2012-01-13 13:35:11 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
class WDB {
|
|
|
|
|
|
|
|
private $host;
|
|
|
|
private $database;
|
|
|
|
private $user;
|
|
|
|
private $password;
|
|
|
|
private $con_id; // Connection ID with MySQL
|
|
|
|
private $result;
|
|
|
|
|
|
|
|
public function __construct($database='', $host='', $user='', $password='') {
|
|
|
|
|
|
|
|
if ($host=='') $this->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;
|
2012-01-27 16:37:27 +00:00
|
|
|
|
2012-01-30 21:09:14 +00:00
|
|
|
//if (defined(MYSQL_PORT)) $this->host = $this->host.':'.MYSQL_PORT;
|
|
|
|
$this->host = $this->host.':53336';
|
2012-01-27 16:37:27 +00:00
|
|
|
|
2012-01-30 16:20:45 +00:00
|
|
|
$this->con_id = mysql_connect($this->host, $this->user, $this->password);
|
2012-01-13 13:35:11 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
?>
|