Erro classe de conexao

Pessoal, esta é minha classe de conexão:

   >     <?php 
    >     	Class Conexao extends Config
    >     	{
    >     		private $host, $user, $senha, $banco;
    > 
    >     		function __construct()
    >     		{
    >     			$this->host = self::BD_HOST;
    >     			$this->user = self::BD_USER;
    >     			$this->senha = self::BD_SENHA;
    >     			$this->banco = self::BD_BANCO;
    >     			$this->prefix = self::BD_PREFIX;
    > 
    >     			try
    >     			{
    >     				if($this->Conectar() == null)
    >     				{
    >     					$this->Conectar();	
    >     				}
    >     			} 
    >     			catch (Exception $e) 
    >     			{
    >     				exit($e->getMessage() . 'Erro ao conectar com o banco de dados!');
    >     			}
    >     		}
    >     		private function Conectar()
    >     		{
    >     			$options = array(
    >     				PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    >     				PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
    >     			);
    > 
    >     			$link = new PDO("mysql:host={$this->host};dbname{$this->banco}", $this->user, $this->senha, $options);
    >     			return $link;
    >     		}
    > 
    >     		function ExecuteSQL($query, array $params = NULL)
    >     		{
    >     			$this->obj = $this->Conectar()->prepare($query);
    >     			**return $this->obj->execute();**  /*ERRO NESSA LINHA */
    >     		}
    > 
    >     		function ListarDados()
    >     		{
    >     			return $this->obj->fetch(PDO::FETCH_ASSOC);
    >     		}
    >     	}
    >      ?>

Quando mando fazer um select dessa maneira:

> $sql = "select * from categorias";
> 	$dados->ExecuteSQL($sql);
> 	$lista = $dados->ListarDados($sql);
> 	echo '<pre>';
> 	var_dump($lista);
> 	echo '</pre>';

Aparece esse aviso:

Warning: PDOStatement::execute(): SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\xampp\htdocs\ipeloja\model\Conexao.class.php on line 40

que rerefe-se a linha em negrito na classe. O que estou fazendo de errado? Obrigado

Está dizendo que o banco de dados que você está tentando fazer a requisição não existe.

Verifica se o link que está sendo passado realmente está correto.

Não estou entendendo. Essas são minhas constantes do banco:

const BD_HOST = “localhost”,
BD_USER = “root”,
BD_SENHA = “”,
BD_BANCO = “loja”,
BD_PREFIX = “”;

Inclusive, recriei o banco. Mas o erro continua.

Verifica aqui se o link que está sendo passado está exatamente como você precisa.

Se o erro não for aqui, então não sei como te ajudar, entendo pouco de PHP, mas o erro diz claramente que o banco não existe.

Rodrigo_Marden,

Também entendo pouco de php, estou indo na marra. De qualquer forma, obrigado pela dica. Estou revendo o código.

Consegui resolver. Revendo o código, vi que havia esquecido de colocar o sinal de (=) nesta linha: dbname{$this->banco}. Tem que ficar dessa forma: dbname={$this->banco}.

Exatamente como eu disse, haha

O banco não existia porque não estava sendo passado nada.