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