1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
<?
class PDOPlusStatement extends PDOStatement
{
public $dbh;
protected $p_params;
public static $sql;
public static $requetes;
public static $cache_est_actif = false; // active l'historique des objets statments;
public static $cache_requete_est_actif = false; // active l'historique des requetes;
protected function __construct($dbh)
{
$this->dbh = $dbh;
$this->p_params = array();
if( self::$cache_est_actif )
{
if( self::$sql == null )
self::$sql = array();
self::$sql[] = $this;
}
}
public function execute()
{
if( self::$cache_requete_est_actif )
{
if( self::$requetes == null )
self::$requetes = array();
self::$requetes[] = $this->debugRequete();
}
return parent::execute();
}
public function bindParam ( $parameter,
$variable ,
$data_type = NULL ,
$length = NULL ,
$driver_options = array() )
{
if( is_bool($variable) && $data_type == PDO::PARAM_INT ){ $variable = intval($variable); }
$param = array();
$param["parameter"] = $parameter;
$param["variable"] = $variable;
$param["data_type"] = $data_type;
$param["length"] = $length;
$param["driver_options"] = $driver_options;
$this->p_params[] = $param;
return parent::bindParam($parameter,$variable,$data_type,$length,$driver_options);
}
public function debugRequete()
{
$retour = $this->queryString;
foreach( $this->p_params as $param )
{
switch( $param["data_type"] )
{
case PDO::PARAM_STR:
/*
$pattern = '/('.$param["parameter"].')[/s]{0,}[,]{0,}/i';
$matches = array();
preg_match($pattern, $retour, $matches );
if( count() == 0 )
{
echo "pattern : ".$pattern."\n";
die(var_dump($matches));
}
*/
$pattern = '`('.preg_quote("".$param["parameter"]).')([\s]{0,}[,]{0,})`i';
$replacement = "'".($param["variable"])."'$2";
$tmp = $retour;
$tmp = preg_replace($pattern, $replacement, $tmp , 1 );
if( $retour == $tmp )
{
echo "pattern : ".$pattern."\n";
echo "retour : ".$retour."\n";
}
$retour = $tmp;
//$retour = str_replace($param["parameter"]."" , "'".$param["variable"]."'" , $retour );
break;
default:
/*
$pattern = '/('.$param["parameter"].')[/s]{0,}[,]{0,}/i';
$matches = array();
preg_match($pattern, $retour, $matches );
if( count() == 0 )
{
echo "pattern : ".$pattern."\n";
die(var_dump($matches));
}
*/
$pattern = '`('.preg_quote("".$param["parameter"]).')([\s]{0,}[,]{0,})`i';
$replacement = "".($param["variable"])."$2";
$tmp = $retour;
$tmp = preg_replace($pattern, $replacement, $tmp , 1);
if( $retour == $tmp )
{
echo "pattern : ".$pattern."\n";
echo "retour : ".$retour."\n";
}
$retour = $tmp;
// $retour = str_replace($param["parameter"]."" , $param["variable"]."" , $retour );
break;
}
}
return $retour;
}
}
?> |
Partager