Buonasera,
credo di essermi impantanato con le connessioni al database. Funzionava tutto bene, ampiamente testato con diversi tipi di query (SELECT, INSERT, UPDATE, CREATE, TRUNCATE, ecc), ma poi ho deciso di gestire anche l'autenticazione al sito tramite il database ed ora ho un problema con le query. Inizialmente, username e password di un piccolo login (max 10 utenti), erano memorizzate direttamente in un file php.
Quindi avevo un file con i dati del database "___dbconnection.php":
codice:
<?php
$hostname = "localhost";
$database = "mio_database";
$username = "root";
$password = "";
?>
...e poi inserivo il codice per la connessione all'inizio di ogni pagina:
codice:
<?php
require_once 'sql/___dbconnection.php';
try {
$connection = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//print_r("Connessione al database '".$database."' riuscita");
} catch (PDOException $e) {
print_r ("ERRORE: impossibile connettersi al database ".$database." - " . $e->getMessage());
die();
}
?>
Ora invece nel file "___dbconnection.php" ho inserito anche la connessione al database:
codice:
<?php
session_start();
$hostname = "localhost";
$database = "mio_database";
$username = "root";
$password = "";
try {
$connect = new PDO("mysql:host=".$hostname."; dbname=".$database, $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
...e poi all'inizio di ogni pagina ho questo codice per controllare la sessione:
codice:
<?php
require 'sql/___dbconnection.php';
if (empty($_SESSION['my_user'])) {
header('Location: login.php');
}
?>
Il problema che riscontro in ogni pagina � che, nonostante l'autenticazione (login al sito) funzioni correttamente, non riesco pi� a connettermi al database per tutte le altre query della pagina:
Notice: Undefined variable: connection in K:\EasyPHP-Devserver-17_db...
Ricapitolando, se nella pagina includo il file della connessione al database, non dovrei di conseguenza avere la variabile $connection disponibile in tutta la pagina per ogni query da eseguire? Esempio di query che si trova nella stessa pagina e che non funziona più:
codice:
<?php
try {
$data_elenco_comuni = $connection->query('SELECT * FROM tbl_elenco_comuni ORDER BY id ASC')->fetchAll();
} catch (PDOException $e) {
print_r ("ERRORE: ".$e->getMessage());
}
?>
Poi volevo anche chiedere se va bene includere session_start(); nel file di connessione al database (viene richiamato ogni volta che si apre la pagina).
Forse dovrei ritornare alla situazione iniziale e creare semplicemente un nuovo file per la connessione al database, da eseguire solo al momento del login.
Insomma sono un po confuso.