Tengo dos archivos, uno llamado connection.php y otro llamado suggest.php, en connection.php hago la conexión perfectamente con una función llamada connectDB y la utilizo sin ningún problema en suggest.php.
Sin embargo, tengo otra función en la cual quiero desplegar con un SELECT la información de mi base de datos, y me gustaría hacerlo a través de una función también. El error que me arroja PHP es el siguiente:
Fatal error: Call to a member function query() on null in C:\AppServ\www\object\db\inc\connection.php on line 18
No soy muy experto pero creo que tiene que ver con el ámbito de la variable, ya que dentro de la función connectDB esta la variable(objeto) $db.
¿Esa variable puedo hacerla global para poder utilizarla en todas las funciones? ¿Cómo puedo hacerlo?
suggest.php
<?php
include 'connection.php';
connectDB('root','administrador');
selectMedia();
?>
connection.php
function connectDB($user, $pass, $dsn = 'mysql:host=localhost;dbname=database'){
try {
$db = new PDO($dsn, $user, $pass);
$db->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);
} catch (Exception $e) {
echo "Error: " . $e->getMessage()."<br>";
echo "Código de excepción: " . $e->getCode()."<br>";
echo "Línea fuente: " . $e->getLine()."<br>";
echo "Archivo: " . $e->getFile();
}
}
function selectMedia(){
try {
$results = $db->query("SELECT title, category FROM Media");
echo "Cool!";
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
}
?>