PDO Statement zamknięte w funkcji - "no database selected"

0

Witam,

Walczę z wrzuceniem PDO do funkcji (podobne zapytanie wykorzystywane w wielu miejscach). Gdy to samo zapytanie jest napisane "luzem" działa poprawnie, nie zwraca żadnych błędów. Kiedy jednak tylko zamknę je w fukcję otrzymuję błąd

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp\htdocs\evemed\test_db.php on line 37
( ! ) PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp\htdocs\evemed\test_db.php on line 37

Kod brzmi następująco:

function PDO_Query()
{
$conf = ['host' => 'localhost', 'user' => 'root', 'password' => '', 'database' => 'evemed'];

try {
	$db = new PDO(
		"mysql:host={$conf['host']}; dbname={$conf['database']}; charset=utf8",
		$conf['user'],
		$conf['password']
	);
} catch (PDOException $error) {
	echo $error->getMessage();
	exit($error);
}

return $db;
}

$db = PDO_Query();

$query = $db->prepare("
	SELECT *
	FROM employees
	WHERE id >= :id
");
$query->bindValue('id', $id, PDO::PARAM_INT);
$query->execute();

Jak widać baza danych jest wskazywana i taki kod działa poprawnie, jednak kiedy powyższe zapytanie (od linii 19) zamknę w funkcję:

function EmpInfo($id)
{
	$db = PDO_Query();

	$query = $db->prepare("
		SELECT e.*
		FROM employees
		WHERE id = :id
	");
	$query->bindValue('id', $id, PDO::PARAM_INT);
	$query->execute();

	return $query;
}

$user = EmpInfo(1);

dostaję błąd jak na wstępie. Jak zatem wskazać wybraną bazę danych? Użycie FROM DBNAME.employees nie daje żadnego efektu

0

W drugim przykładzie w zapytaniu masz SELECT e.*, ale nie wiadomo czym jest e. Wydaje mi się, że w tym jest problem.

0
arczinosek napisał(a):

W drugim przykładzie w zapytaniu masz SELECT e.*, ale nie wiadomo czym jest e. Wydaje mi się, że w tym jest problem.

To tylko pozostałość po przygotowaniu kodu do publikacji na forum.
W między czasie udało mi się rozwiązać problem. Wadziło wcześniejsze wywołanie, w tym samym pliku, funkcji PDO_Query(). Dlaczego? Nie mam pojęcia

1 użytkowników online, w tym zalogowanych: 0, gości: 1