Problème variable dans une new PDO

Résolu/Fermé
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - 30 nov. 2022 à 21:28
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - 1 déc. 2022 à 10:07

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

jordane45 Messages postés 38041 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 février 2024 4 622
30 nov. 2022 à 22:25

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


.
Cordialement,
Jordane

0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
1 déc. 2022 à 10:04

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 mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39 > CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023
1 déc. 2022 à 10:07

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