Salve a tutti,
mi sono messo a studiare PDO per tramutare tutto il codice mysql che ho, solo che ho qualche problema di organizzazione del progetto (in rete ho trovato pochi esempi). Attualmente con Mysql lavoro così:
connessione.php che includo in ogni pagina
Quando il sistema è in produzione $dev è sul 2, se la query non va a buon fine mi arriva un'email e viene creato il file alert.txt in modo che se non me ne accorgo subito e ci sono continui errori evito di ritrovarmi la casella piena. Tramutare il tutto in PDO mi risulta difficile:
connessione.php
Alcuni consigliano di non usare try/catch perchè alcuni errori non li rileva e fa andare avanti lo stesso..
Potrebbe essere questa una soluzione?
Voi come strutturate il codice delle vostre query?
mi sono messo a studiare PDO per tramutare tutto il codice mysql che ho, solo che ho qualche problema di organizzazione del progetto (in rete ho trovato pochi esempi). Attualmente con Mysql lavoro così:
connessione.php che includo in ogni pagina
PHP:
<?php
// Host
$host = "localhost";
...
etc...
// 0: Errore generico. 1: Debug. 2: Errore generico con invio mail di alert
$dev = 1;
$mittalert = 'From: "Error" <[email protected]> \r\n';
$destalert = "[email protected]";
$oggalert = "Errore il: " . date('d-m-Y H:i:s',time());
$msgalert = "Si e' verificato un errore.";
// Mi connetto al server mysql
$myconn = mysql_connect("$host", "$user", "$pass") or die("Errore login db");
// Seleziono il database
mysql_select_db("$nomedb", $myconn) or die("Errore selezione db");
?>
PHP:
include "includes/connessione.php";
$query_code = "SELECT nome FROM " . $prefisso . "utenti WHERE id = '" . $id . "'";
if ($dev == 1) { $result_code = mysql_query($query_code, $myconn) or die("errore: $query_code " . mysql_error()); }
else if ($dev == 2) { $result_code = mysql_query($query_code, $myconn);
if (!$result_code) {
if (!file_exists('alert.txt')) { $alertfile = fopen('alert.txt', 'a+'); fclose($alertfile);
mail($destalert, $oggalert, $msgalert, $mittalert); }
$logfile = fopen('log.txt', 'a+'); fwrite($logfile, date('d-m-Y H:i:s',time()) . " - 82 - " . mysql_error()."\n"); fclose($logfile); exit("$errorequery");
} } else { $result_code = mysql_query($query_code, $myconn) or die("$errorequery"); }
Quando il sistema è in produzione $dev è sul 2, se la query non va a buon fine mi arriva un'email e viene creato il file alert.txt in modo che se non me ne accorgo subito e ci sono continui errori evito di ritrovarmi la casella piena. Tramutare il tutto in PDO mi risulta difficile:
connessione.php
PHP:
<?php
// Host
$host = "localhost";
// Username
$user = "root";
// Password
$pass = "";
// Nome database
$nomedb = "miodb";
// Prefisso tabelle
$prefisso = "db_";
?>
PHP:
include "includes/connessione.php";
try {
// Mi connetto al server mysql
$myconn = new PDO("mysql:host=$host;dbname=$nomedb", $user, $pass);
$myconn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// Imposto ed eseguo la query
$query = $myconn->prepare("SELECT nome FROM " . $prefisso . "utenti WHERE id = '" . $id . "'");
$query->execute();
// conteggio dei record coinvolti dalla query
if($query->rowCount() > 0){
// creazione di un'array contenente il risultato
$result = $query->fetchAll();
// ciclo dei risultati
foreach($result as $row){
$nome = $row[0];
echo $nome . "<br>";
$myconn = null;
}
}else{
echo "Nessun record corrispondente alla richiesta.";
}
}
catch(PDOException $e){
// otteniamo l'errore
echo '<br>Error: ' . $e->getMessage();
echo '<br>Line: ' . $e->getLine();
echo '<br>File: ' . $e->getFile();
}
Alcuni consigliano di non usare try/catch perchè alcuni errori non li rileva e fa andare avanti lo stesso..
PHP:
$PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
$resultset = $PDO->query("SELECT * FROM inesistente");
if(!$resultset){
print_r($PDO->errorInfo());
die();
}
Potrebbe essere questa una soluzione?
Voi come strutturate il codice delle vostre query?