Функциональный файл не распознает подключение к базе данных PDO

У меня есть файл func.php, который содержит функцию, которая получает данные моего пользователя:

require_once 'connection.php';

function getUI($username){

$query = "SELECT * FROM usernames WHERE username = ?";

$sth = $pdo->prepare($query);

$sth->bindValue(1, $username);

$sth->execute();

$result = $sth->fetch(PDO::FETCH_ASSOC);

return $result;
}

в моем connection.php у меня есть:

require_once 'details.php';

$pdo = new PDO("mysql:host=" . $dabhost . "; dbname=" . $dabname ."", $dabusern, $dabpassw);

и в details.php у меня есть:

$dabhost = "localhost";
$dabname = "dab1";
$dabusern = "root";
$dabpassw = "root";

И, наконец, у меня есть файл userdetails.php, в котором есть куча HTML-кода и отображаются результаты, которые возвращает функция getUI (). Мне требуется func.php в начале:

require_once ‘folder1 / func.php’;

Мой каталог выглядит так:

rootfolder/userdetails.php
rootfolder/folder1/details.php
rootfolder/folder1/connection.php
rootfolder/folder1/func.php

Проблема в том, что когда я открываю userdetails.php, в моем файле php_error.log появляется ошибка, которая говорит следующее:

PHP Notice:  Undefined variable: pdo in /rootfolder/folder1/func.php on line 58
PHP Fatal error:  Call to a member function prepare() on null in /rootfolder/folder1/func.php on line 58

Где, если бы я просто поместил весь код в начало моего userdetails.php, он бы работал и вернул ожидаемые результаты. Поэтому что-то не так с тем, как мне требуются файлы / область видимости переменных, я думаю …

Может ли кто-нибудь объяснить мне, что я делаю не так?

Ваша помощь очень ценится!

Большое спасибо!

ОБНОВИТЬ:

Передача моего соединения $ pdo в качестве второго аргумента в функции решила мою проблему, но теперь я не могу получить результат x из моей возвращенной переменной $ return, например:

echo $ result [‘date’];

Это говорит о том, что переменная $ result не определена. Есть идеи, почему это происходит?

Еще раз большое спасибо!

1

Решение

Когда вы объявляете

function getUI($username) {}

$pdo недоступен, потому что выходит за рамки функции.

Вам нужно будет передать его в качестве дополнительного параметра или найти какой-то другой механизм для получения $pdo внутри getUI(),

Если вам нужно больше информации

0

Другие решения

require_once 'connection.php';

function getUI($username,$pdo){

$result = null ;

$query = "SELECT * FROM usernames WHERE username = ?";

$sth = $pdo->prepare($query);

$sth->bindValue(1, $username);

$sth->execute();

$result = $sth->fetch(PDO::FETCH_ASSOC);

return $result;
}

Замечания : Передайте объект PDO в качестве второго параметра при вызове вышеуказанной функции.

0

По вопросам рекламы [email protected]