Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error consulta BD accediendo a una misma conexion php

Estas en el tema de Error consulta BD accediendo a una misma conexion php en el foro de PHP en Foros del Web. Hola buenas, estoy intentando realizar dos funciones en php que acceden a una misma base de datos y ambas comparten la misma conexion. El problema ...
  #1 (permalink)  
Antiguo 21/01/2015, 06:20
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 12 años, 10 meses
Puntos: 2
Error consulta BD accediendo a una misma conexion php

Hola buenas, estoy intentando realizar dos funciones en php que acceden a una misma base de datos y ambas comparten la misma conexion.

El problema que tengo es que con la primera puedo acceder pero con la segunda me marca error: "Error de ConexiónAccess denied for user ''@'localhost' (using password: NO)", intuyo que no puede acceder por que está en uso, a continuación os expongo el problema.

Fichero conexion "conexion_mysqli.php":
Código PHP:
include_once 'configuracion.php';

$conexion = new mysqli($servidor,$usuario,$password,$db_name);

if ( 
$conexion->connect_error 

    die(
'Error de Conexión'$conexion->connect_error);  
}
else
{
    
//echo 'Conexion OK';

Fichero con consultas
Código PHP:
echo consultaprimera();
echo 
consultasegunda();

function 
consultaprimera(){
    include 
'conexion_mysqli.php';
    
$query "select username from usuarios;";
    
$result $conexion->query($query);
    while (
$row $result->fetch_assoc()) {
            foreach(
$row as $indice=>$valor){
                print 
"$valor";
            }
            print 
"<br>";
    }
    
$result3->free();
    
mysqli_close($conexion);
}

function 
consultasegunda(){
    include 
'conexion_mysqli.php';
        
$query "select nombre from usuarios;";
    
$result $conexion->query($query);
    while (
$row $result->fetch_assoc()) {
            foreach(
$row as $indice=>$valor){
                print 
"$valor";
            }
            print 
"<br>";            
    }

    
$result3->free();
    
mysqli_close($conexion);

¿Como puedo hacer ambas consultas compartiendo la misma conexion?, ¿Es posible?

Gracias
  #2 (permalink)  
Antiguo 21/01/2015, 06:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error consulta BD accediendo a una misma conexion php

Conexiones desde un lenguaje a la base de datos no son tema de BBDD sino de programación.

OFF TOPIC en MySQL.
Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/01/2015, 06:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error consulta BD accediendo a una misma conexion php

Extendiendo un poco el tema, para que una conexión se pueda compartir al usar dos o más bases de datos, las bases deben estar forzosamente en el mismo servidor.
¿Ese es el caso?
¿Es el mismo servidor?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 21/01/2015, 06:43
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Error consulta BD accediendo a una misma conexion php

El primer mensaje dice:

Cita:
Hola buenas, estoy intentando realizar dos funciones en php que acceden a una misma base de datos y ambas comparten la misma conexion.
En PHP se usa mucho el Singleton, pero eso es sabiendo patrones y usando objetos, obviamente. Lo que si puedes hacer es usar include_once, esta funcion incluye solo una vez el fichero y no cada vez que se ejecuta, igualmente tienes la funcion declarada 2 veces, con declararla arriba es suficiente. Haciendolo 2 veces puede que tengas que abrir la conexion en la segunda consulta, porque la cerraste en la primera.
  #5 (permalink)  
Antiguo 21/01/2015, 07:09
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Error consulta BD accediendo a una misma conexion php

Hola, gracias por vuestras rápidas respuestas.

En primer lugar pedir disculpas, por ubicarlo en la zona incorrecta.

Hola gnzsoloyo, el caso es compartir la misma conexión con una única base de datos.

Hola giuli956, te comento, las funciones que puse era un ejemplo, el caso es que en el momento que tan solo una función haga una consulta accediendo fichero "conexion" ya puedo tener varias funciones que se ejecuten e intenten acceder al fichero conexion que no funciona.

Lo de include_once entiendo que se refiere a ponerla fuera de las funciones, pero en este caso tienen que estar dentro de las funciones para poder conectarse a la bd.


Cuando dices abrir la conexion en la segunda consulta, se refiere a poner una nueva conexion en el fichero "conexion_mysqli.php", que se llame por ejemplo:
$conexion2 = new mysqli($servidor,$usuario,$password,$db_name);

¿Es eso?

¿O hay otra forma más sencilla?

Gracias!!!
  #6 (permalink)  
Antiguo 21/01/2015, 08:10
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Error consulta BD accediendo a una misma conexion php

Tema resulto.

He dado con la solución, por lo visto mas sencilla de lo que esperaba.

La solución ha sido poniendo constantes en el fichero de configuracion.php y luego en la llamada de "conexion_mysqli.php" poniendo las relativas constantes, las funciones son las mismas que en el primer mensaje, quedando de la siguiente manera:

Configuracion.php
Código PHP:
define('DB_HOST''aquielservidor');
define('DB_USER''aquieluser');
define('DB_PASSWORD''aquilacontraseña');
define('DB_DBNAME''aquilabasededatos'); 
Fichero conexion "conexion_mysqli.php":
Código PHP:
include_once 'configuracion.php'

$conexion = new mysqli(DB_HOSTDB_USERDB_PASSWORDDB_DBNAME);

if ( 
$conexion->connect_error )  
{  
    die(
'Error de Conexión'$conexion->connect_error);   

else 

    
//echo 'Conexion OK'; 


Etiquetas: bd, conexion, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:53.