PHP - Problemas con conexiones PDO PHP

   
Vista:
Imágen de perfil de Isaac

Problemas con conexiones PDO PHP

Publicado por Isaac (2 intervenciones) el 19/09/2015 14:20:44
Buenos días, tengo un problema con las conexiones PDO

Estoy trabajando con servidor local XAMPP en Windows 10 con puerto de Apache 8080.

Tengo la siguiente clase:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
   class Conexiones
   {
	private $conexion;
   	private $host = 'localhost';
   	private $usuario = 'root';
   	private $pass = '';
   	private $bbdd = 'boda';
 
	public function conectar() {
		try {
			$this->conexion = new PDO("mysql:host = $this->host;dbname = $bbdd", $this->usuario, $this->pass);
			$this->conexion->exec("SET CHARACTER SET utf8");
			$this->conexion->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
                        $this->conexion->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
                        $this->conexion->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
			} catch (PDOException $e) {
				print "ERROR: ".$e->getMessage();
				die();
			}
		}
 
		public function consulta($consulta, $datos) {
			$sql = $this->conexion->prepare($consulta);
                        $sql->execute($datos);
		}
 
		public function desconectar() {
			$this->conexion = null;
		}
 
		public function __clone() {
			trigger_error('La clonación de este objeto no está permitida', E_USER_ERROR);
		}
}
?>

La base de datos "boda" está creada, con una tabla "invitados" pero al intentar hacer un insert:

1
2
3
4
5
6
7
8
9
10
11
12
public static function addInvitado($nombre, $novios, $categoria, $tipo, $numPersonas, $asiste = 1) {
         $insert = "INSERT INTO invitados (nombre, novios, categoria, tipo, numPersonas, asiste) VALUES (:nombre, :novios, :categoria, :tipo, :numPersonas, :asiste)";
 
         $datos = array('nombre' => $nombre, 'novios' => $novios, 'categoria' => $categoria, 'tipo' => $tipo, 'numPersonas' => $numPersonas, 'asiste' => $asiste);
 
         $conexion = new Conexiones();
         $conexion->conectar();
         $result = $conexion->consulta($consulta, $datos);
         $conexion->desconectar();
 
         return $result;
}

Es cuando al recoger de un formulario los datos, enviarlos por AJAX a un archivo php y ejecutar el método de la clase Invitados.php (esta de arriba) me de vuelve el error de la excepcion PDO: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected

Que la base de datos no está seleccionada, pero está creada y pasada al PDO como se ve en la clase "Conexiones".
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaac

Problemas con conexiones PDO PHP

Publicado por Isaac (2 intervenciones) el 19/09/2015 19:21:52
Resuelto, el primer fallo eran los espacios que dejaba entre los signos de igual "=" y lo segundo es que cuando usamos como valores atributos de una clase o de un array, tienen que ir entre llaves:

$this->conexion = new PDO("mysql:host={$this->host};dbname={$this->bbdd}", $this->usuario, $this->pass);

Y ya funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Problemas con conexiones PDO PHP

Publicado por xve (5518 intervenciones) el 19/09/2015 20:32:55
Gracias por compartirlo Isaac!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar