salut a tous
lorsque je stock des donne dans ma DB avec mon extend de PDO
j'ai le droit a des entrée avec des `0` a la place de mes valeur binder
voici mon code :
et voici mon extend :
lorsque je stock des donne dans ma DB avec mon extend de PDO
j'ai le droit a des entrée avec des `0` a la place de mes valeur binder
voici mon code :
public function add(Users $user) {
$q = $this->_sql->prepare("INSERT INTO ".$this->_table." VALUES(
' ',
user_name = :name,
user_email = :email,
user_password = :password,
user_locale = :locale,
user_right = :right,
user_forum = :forum,
user_key = :key)");
$q->bindValue(':name', $user->getName());
$q->bindValue(':email', $user->getEmail());
$q->bindValue(':password', $user->getPassword());
$q->bindValue(':locale', $user->getLocale());
$q->bindValue(':right', $user->getRight(), PDO:ARAM_INT);
$q->bindValue(':forum', $user->getForum(), PDO:ARAM_INT);
$q->bindValue(':key', $user->getKey());
echo "___10___";
$q->execute();
echo "___11___";
}
et voici mon extend :
<?php
/* Classe SQL.
** Auteur : Matty
** Dernière modification : 10/06/09 - 16h25
** Description : extend de MySQLi, et petit log de débug.
** Notes d'auteur :
** Journal :
** - Ajout de l'en-tête commentaire par Matty.
** - [Matty] Encodage changé en utf-8.
** [Talus] 27/02/2011 à 16h25 - Passage en PDO
*/
class SQLException extends PDOException {}
class SQLStatement extends PDOStatement
{
public function execute($allParams = NULL, $bindMode = Sql::BINDMODE_VALUE) {
if(!in_array($bindMode, array(Sql::BINDMODE_VALUE, Sql::BINDMODE_PARAM)))
{
$this->throwError('Unknow bind mode "<b>'. $bindMode .'</b>".');
return FALSE;
}
else
{
$last_marker = 0;
foreach($allParams as $marker => $value) {
if(!is_string($marker))
$marker = ++$last_marker;
$type = Sql:ARAM_STR;
if(is_int($value))
$type = Sql:ARAM_INT;
$this->$bindMode($marker, $value, $type);
}
return parent::execute();
}
}
public function bindValue($parameter, $value, $data_type = Sql:ARAM_STR)
{
if($data_type == Sql:ARAM_INT)
$value = (int) $value;
return parent::bindValue($parameter, $value, $data_type);
}
public function bindParam($parameter, $value, $data_type = Sql:ARAM_STR, $length = NULL, $driver_options = NULL)
{
if($data_type == Sql:ARAM_INT)
$value = (int) $value;
return parent::bindParam($parameter, $value, $data_type, $length, $driver_options);
}
private function throwError($error_message, $code = NULL)
{
if($this->getAttribute(Sql::ATTR_ERRMODE) == Sql::ERRMODE_EXCEPTION)
throw new SQLException($error_message, $code);
elseif($this->getAttribute(Sql::ATTR_ERRMODE) == Sql::ERRMODE_WARNING)
trigger_error($error_message, E_WARNING);
}
}
class Sql extends PDO {
const ATTR_LOG_QUERIES = 'SQL_ATTR_LOG_QUERIES';
const BINDMODE_VALUE = 'bindValue';
const BINDMODE_PARAM = 'bindParam';
public $exeTime = 0;
public $queriesCount = 0;
public $queriesTrace = null;
private $driver_options;
private $dsn;
private $user;
private $pass;
public function __construct($Host, $Login, $Password, $db) {
$this->dsn = "mysql:host=".$Host.";dbname=".$db;
$this->user = $Login;
$this->pass = $Password;
$this->driver_options = array(
self::ATTR_ERRMODE => self::ERRMODE_EXCEPTION,
self::ATTR_DEFAULT_FETCH_MODE => self::FETCH_OBJ,
self::ATTR_STATEMENT_CLASS => array('SQLStatement')
);
try{
parent::__construct($this->dsn, $this->user, $this->pass, $this->driver_options);
}
catch (PDOException $e){
echo "Connexion à la base de données du jeu impossible.<br />".$e->getMessage();
}
}
public function prepare($statement, $driver_options = array()) {
$this->queriesTrace[$this->queriesCount]['Prepare'] = $statement;
$iniTime = microtime(true);
$stmt = parent::prepare($statement, $this->driver_options);
if ( isset($driver_options[Sql::ATTR_LOG_QUERIES]) ) {
$stmt->addListener($driver_options[Sql::ATTR_LOG_QUERIES]);
}
$this->queriesCount++;
return $stmt;
}
public function query($Query) {
$this->queriesTrace[$this->queriesCount]['Query'] = $Query;
$iniTime = microtime(true);
try {
$stmt = parent::query($Query);
$iniTimeQuery = microtime(true) - $iniTime;
$this->exeTime += $iniTimeQuery;
$this->queriesTrace[$this->queriesCount]['Time'] = round($iniTimeQuery * 1000, 2);
$this->queriesCount++;
}
catch (PDOException $e){
echo "Une erreur est survenue lors de l\'exécution d\'une requête à la base de données.<br />
<u>Informations :</u><p><strong>SQL ".$e->getMessage()."</strong></p><br />
<u>Requête concernée par l\'erreur :</u><p>".$Query."</p>";
$stmt = false;
}
return $stmt;
}
}
?>
Projet en Cour: Global Chaos