Notice: Undefined variable: conn
Quand je fais ma DB connexion comme ceci:
$conn = new MySQLi(RUBYDBUSER, RUBYDBNAME, RUBYDBPASS, RUBYDBDATA);
if($conn->errno) {
throw new Exception($conn->connect_error, $conn->connect_errno);
}
et je veux exécuter une instruction préparée comme ceci:
public function getSitename() {
$stmt = $conn->prepare("SELECT value FROM cms_options WHERE title = 'sitename' ");
$db->stmt_init();
$stmt->execute();
$stmt->bind_result($sitename);
if($stmt->num_rows > 0) {
while ($stmt->fetch) {
return $sitename;
}
}
}
J'obtiens cette erreur:
Notice: Undefined variable: conn dans C:\xampp\htdocs\ruby\app\includes\classes\class.core.php sur la ligne 26
La requête est en class.core.php
et la connexion dans global.php
. La Classe.de base est inclus comme ceci:
(global.php)
foreach(glob(RUBY_BASE . '/app/includes/classes/class.*.php') as $class){
include_once($class);
}
Des réponses?
`
- Êtes-vous exiger? je ne suis pas sûr de comprendre, mais
require_once
assurez-vous également que si vous déclarez sur le même fichier, utilisez laglobal
mot-clé, de sorte que PHP sait que c'est une variable qui existe déjà, et qui ne relève pas du champ d'application de la fonction.
Vous devez vous connecter pour publier un commentaire.
La variable
$conn
n'est pas à la portée de vos méthodes de la classe. Vous devez effectuer l'une des opérations suivantes :A.) passer le $conn variable dans la méthode que vous souhaitez appeler.
B.) Établir la connexion à l'intérieur de chaque méthode (pas le bon choix parce que vous n'êtes pas réutiliser une connexion établie)
C.) Font de la variable de connexion globale avec une définition statique. Pourrait être défini dans le constructeur de la classe par exemple:
Il existe de nombreuses autres variantes de ce genre, mais ils sont les approches générales
Welkom op Warning: Missing argument 1 for Core::getSitename(), called in C:\xampp\htdocs\ruby\app\themes\default\index.php on line 118 and defined in C:\xampp\htdocs\ruby\app\includes\classes\class.core.php on line 25
Warning: Missing argument 1 for Core::__construct(), called in C:\xampp\htdocs\ruby\app\includes\classes\class.core.php on line 42 and defined in C:\xampp\htdocs\ruby\app\includes\classes\class.core.php on line 8 Fatal error: Access to undeclared static property: Core::$conn in C:\xampp\htdocs\ruby\app\includes\classes\class.core.php on line 10
new YourThing($conn)
si vous utilisez le constructeur (exemple C.) ou lorsque vous appelez la méthode$object->getSiteName($conn)
(Un exemple)Ce en raison de la portée des variables, $conn est définie en dehors de la fonction, ou vous le passer en paramètre, ou vous le définissez comme global, ou vous utilisez une fonction anonyme.
Si $conn est initialisé dans le même fichier ou dans un autre fichier et est inclus dans le fichier qui définit la
getSitename()
fonction, vous pouvez marquer le$conn
variable comme gloabl l'intérieur de la fonction et il va fonctionner.