php PDO mysql connessione(select_db)

frankz

Nuovo Utente
27 Dic 2017
8
0
1
64
Vorrei sapere se qualcuno mi puo' spiegare perche' questa parte di codice non funziona.
PHP:
function getDB(){
    session_start();
    $hostname="localhost";
    $dbname=$_SESSION['dbusato'];
    $user="root";
    $pass="pippo";
    $dboptions = array(
        PDO::ATTR_PERSISTENT => FALSE,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    );

    try {
        $DBsel= new PDO("mysql:host=$hostname;dbname=$dbname", $user, $pass, $dboptions);
        return $DBsel;
    }
    catch (PDOException $e){
        echo "ERRORE:  ". $e->getMessage();
        die();
    }
}
mentre se sostituisco la riga $dnmame... con:
$dbname="ottica";
funziona regolarmente.
Chiedo questo, perche' la mia intenzione e' di dare il nome del database dinamicamente ( ogni anno faccio il clone del DB e quindi vorrei rivedere i dati degli anni precedenti), come alternativa a mysql_select_db().
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
function getDB(){ session_start();
il comando session_start è in una posizione strana, dovrebbe essere la prima istruzione dello script
$dbname=$_SESSION['dbusato'];
sembra che non riesca a prendere il valore da $_SESSION, tant'è che,
$dbname="ottica"; funziona regolarmente
quindi inserendo il valore manualmente lo recepisce e lavora.

prova a sistemare session_start come prima istruzione dello script
e poi inserisci un controllo visivo del risultato
PHP:
function getDB(){
    var_dump($_SESSION['dbusato']);

    $hostname="localhost";
    $dbname=$_SESSION['dbusato'];
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
per prima cosa fai una verifica che la sessione $_SESSION['dbusato'] sia valorizzata, es
PHP:
//....
$hostname="localhost";
if(isset($_SESSION['dbusato'])){
    $dbname=$_SESSION['dbusato'];
}else{
    echo "la sessione NON è valorizzata";
}
//.....
poi verifica che session_start() sia alla prima riga, prima di qualsiasi output html, anche uno spazio prima del tag php è un output html
 

frankz

Nuovo Utente
27 Dic 2017
8
0
1
64
ciao
per prima cosa fai una verifica che la sessione $_SESSION['dbusato'] sia valorizzata, es
PHP:
//....
$hostname="localhost";
if(isset($_SESSION['dbusato'])){
    $dbname=$_SESSION['dbusato'];
}else{
    echo "la sessione NON è valorizzata";
}
//.....
poi verifica che session_start() sia alla prima riga, prima di qualsiasi output html, anche uno spazio prima del tag php è un output html
in effetti la variabile non era valorizzata, avevo fatto un errore concettuale