Problème variable dans une new PDO

Résolu
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   -  
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Alors la je comprend pas ..

Je définie des variables au dessus de ma fonction ..

//Variable IP Serveur BDD
$serveur_bdd = "172.16.1.120";
//Variable Nom database
$database_name = "DASHDEV";
//Varaible Utilisateur BDD
$database_user = "test";
//Varaible mot de passe BDD
$database_password = "test";

function get_pdo (): PDO {
    return new PDO("mysql:host=".$serveur_bdd.";dbname=".$database_name , $database_user, $database_password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
}

En résultat j'ai Undefined variable.... Alors que je peux très bien les echo ...

Le echo n'est pas dans mon exemple de code au dessus mais je vous assure qu'elle sont bien afficher...

Si vous avez des idées ...


Windows / Opera 92.0.0.0


1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

C'est un problème de portée des variables.

Soit tu les définis en tant que constantes ...

Soit, dans ta fonction, tu y fais appel en global

https://www.php.net/manual/en/language.variables.scope.php


0
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   40
 

Bonjour, Merci de votre retour !

J'ai bien regarde la doc la dessus je comprend pas la difference entre mon code est clui donnée dans l'exemple php :

<?php
$a = 1; /* global scope */ 

function test()
{ 
    echo $a; /* reference to local scope variable */ 
} 

test();
?>

Hormis les Guillemets sur les variables

$serveur_bdd = "172.16.1.120"; 
0
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   40 > CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention  
 

Je viens de voir la doc sur globals que je ne connaissez pas. Effectivement cela fonctionne bien !

function get_pdo (): PDO {
    return new PDO("mysql:host=".$GLOBALS['serveur_bdd'].";dbname=".$GLOBALS['database_name'] , $GLOBALS['database_user'], $GLOBALS['database_password'], [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
}
0