scusa se ti rispondo solo adesso ma grazie alla tua risposta mi sono guadagnato una giornata di ricerce e ho solo iniziato a capire la metà di quello che mi serve....
Allora premesso che tutto ciò che ho detto era una caxxata.
Ho affrontato abbastanza approfonditamente il discorso della classe pdo ed effettivamete con la funzione "prepare" e con il bindParam passandogli come argomento il tipo di dati dovrei essere abbastanza sicuro che quello che arriva al db siano dati affidabili.
Suppongo, correggimi se sbaglio, che quando vafo a fare il bindParam dovrebbe essere tutto all'interno di un try catch per poter gestire l'errore evitando l'interruzione.
La figata più assurda è la funzione di beginTransaction
però siccome io mi voglio complicare bene la vità e perchè vorrei iniziare a gestire bene gli errori di connessione esecuzione ecc ho pensato e buttato giu queste righe di codice
Codice PHP:
<?php
class db extends PDO {
private $mailerr = false;
private $logfile = false;
private $mailto = "indirizzi_mail";
public function __construct ( $server = "loclhost", $username = "root", $password = "Password1", $dbname = "itron" ) {
$dns = ($dbname) ? "mysql:host={$server};dbname={$dbname}" : "mysql:host={$server}";
try{
parent::__construct($dns, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}catch (PDOException $e) {
$this->getErr("Errore di Connessione!");
}
}
private function getErr($error = ""){
// se bisogna mandare la mail
if(!$this->mailerr){
$testo = "Si è verificato un errore: ".$error." \r\n \r\n Indirizzo del file chiamato: ".$_SERVER['REQUEST_URI'];
$subject = "db extends Pdo: Error.";
//$headers = "From: $to\r\n";
//$headers .= "Reply-To: $to\r\n";
//$headers .= "Return-Path: $to\r\n";
if(!mail($to, $subject, $testo, $headers))
die("Errore durante l'invio della Segnalazione!");
}
if(this->logfile){
$fp = @fopen($this->logfile, "a");
@fwrite($fp, $tipo . date("d/m/Y H:i:s")." - Si è verificato un errore: $error\r\n");
@fclose($fp);
}
if($this->dieerror){
die("Oops! Si e' verificato un errore interno.
".$error."
Stiamo lavorando per risolverlo.");
}
}
}
?>
La classe ti dico che ha già dei problemi pero l'idea sarebbe quella.....
Inoltre vorrei integrare una ulteriore classe
Codice PHP:
class myPDOStatement extends PDOStatement {
}
Dove vado a integrare i metodi di costruzione delle query per avere un accesso comune e la gestione degli errori analoga a come lo è sopra...
Pensi che ci siamo in questo modo?
Una cosa che proprio non ho capito è il suggerimento che mi hai dato per quanto riguarda il
"mapper"
Io ti ringrazio infinitamente per le risposte, non hai idea di che aiuto mi stai dando spiegandomi queste cose..