Problème variable dans une new PDO

Résolu
CorentinRoche Messages postés 287 Statut Membre -  
CorentinRoche Messages postés 287 Statut Membre -

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


Cordialement,
Roche Corentin

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    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
    1. CorentinRoche Messages postés 287 Statut Membre 41
       

      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
      1. CorentinRoche Messages postés 287 Statut Membre 41 > CorentinRoche Messages postés 287 Statut Membre
         

        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