PHP - Falla en conexion por un echo

 
Vista:

Falla en conexion por un echo

Publicado por emilioserna (4 intervenciones) el 07/05/2017 02:37:19
Tengo el siguiente codigo:

home.php

1
2
3
4
5
6
7
8
9
10
require "consulta.php";
 
session_start();
 
 
$amigos=new consulta();
$misamigos=$amigos->get_amigos($yousuario);
 
echo" <br><br>";
$publicaciones2=new consulta();

consulta.php

1
2
3
4
5
6
7
require "conexion.php";
 
class consulta extends conexion{
 
    public function consulta(){
        parent::__construct();  //llamar al constructor de la conexion 
        }
conexion.php

1
2
3
4
5
6
7
8
9
10
class conexion{
protected $conexion_db;
    public function conexion(){
        try{
$this->conexion_db=new PDO('mysql:host=localhost; dbname=****','******', '****');
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$this->conexion_db->exec("SET CHARACTER SET utf8");
            }catch(Exception $e){
                echo"Falla en conexion" . $e->getLine();
            }

al ejecutarlo La primera consulta $amigos=new consulta(); si hace la conexion pero la segunda no la hace $publicaciones2=new consulta(); y me marca un error en esta linea "$this->conexion_db=new PDO('mysql:host=localhost; dbname=','**', '****');" pero se supone que todo esta bien por que la primera vez en la primera consulta si realizo la conexion .

Si borro esta linea

echo'<br><br>';

si realiza correctamente la consulta ,pero el problema es que en mi programa completo necesito usar esos echo . alguien sabe por que pasa esto , y si por ejemplo cambio de lugar estas dos consultas $amigos=new consulta(); y $publicaciones2=new consulta(); ahora la que no funcionaria es la que queda abajo ,gracias por su ayuda.
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Falla en conexion por un echo

Publicado por xve (6935 intervenciones) el 07/05/2017 09:32:21
Hola Emilioserna, esto que te pasa es un tanto extraño... nos puedes indicar exactamente el error que te da al hacer la segunda conexión a la base de datos?
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

Falla en conexion por un echo

Publicado por jemilioserna (4 intervenciones) el 07/05/2017 18:24:11
Buen dia.
El error que me marca es el siguiente :
"Falla en conexion 9"
Que hace referencia a esta linea:
1
$this->conexion_db=new PDO('mysql:host=localhost; dbname=****','******', '****');

como le indique que me marcara la linea del error en esta sentencia:
1
2
}catch(Exception $e){
                echo"Falla en conexion" . $e->getLine();

que en caso de fallar me indique la linea donde esta el fallo ,en este caso la 9 es la que ,menciona arriba.

despues me marca este error

Call to a member function prepare() on a non-object in

pero este error supongo que es por lo mismo que no se realizo la conexión correctamente.

otro dato es que trabando de manera local si me funciona todo pero cuando lo subo a un servidor en internet es cuando me marca el error.
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Falla en conexion por un echo

Publicado por kip (877 intervenciones) el 07/05/2017 20:38:25
Hola, creo que quizas el problema radique en que al momento de crear una nueva clase consulta estas creando una nueva conexion a la DB, en local funciona porque no hay problemas de conexion multiple a la DB pero quizas el servidor tiene mas restricciones.

En tu caso ademas para evitar el error y asi mantener siempre la misma conexion a la DB(esto para no sobrecargar de conexiones) intentaria aplicar el patron Singleton y asi mantener siempre la misma instancia de conexion.

No estoy muy seguro pero podrias intentarlo.
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

Falla en conexion por un echo

Publicado por emilioserna (4 intervenciones) el 07/05/2017 22:22:52
Hola ,gracias pro responder ,no creo que sea eso por que de echo mi programa completo tiene como 10 consultas y todas funcionan ,excepto las que estan abajo de un echo :/,solo que las borre solo para que vieran el ejemplo mas claro .
Me esta volviendo loco,no tiene sentido que no se conecte.
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Falla en conexion por un echo

Publicado por kip (877 intervenciones) el 07/05/2017 22:31:36
Entiendo, entonces que tal si en el catch colocas en lugar de la clase Exception, la clase PDOException para asi mostrar el error especifico acorde al problema de la conexion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class conexion
{
 
    protected $conexion_db;
 
    public function conexion()
    {
        try {
            $this->conexion_db=new PDO('mysql:host=localhost; dbname=****','******', '****');
            $this->conexion_db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $this->conexion_db->exec("SET CHARACTER SET utf8");
        } catch (PDOException $e) {
            echo 'Falló la conexión: ' . $e->getMessage();
        }
    }
 
}

Pruebalo y cuentanos que mensaje te muestra...
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

Falla en conexion por un echo

Publicado por emilioserna (4 intervenciones) el 08/05/2017 00:34:17
Creo que si tenias razon ,el mensaje de error es el siguiente
"User 'u277035456_where' has exceeded the 'max_user_connections' resource (current value: 3)"

ya con eso al menos ya se que es para ponerme a investigar de nuevo, muchas gracias por su tiempo :).
saludos
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