Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Solo ejecuta la primera consulta MySQL

Estas en el tema de Solo ejecuta la primera consulta MySQL en el foro de PHP en Foros del Web. Buenas! resulta que estaba con un pequeño proyecto de PHP en el que mando una serie de parámetros a un fichero php a través de ...
  #1 (permalink)  
Antiguo 07/03/2013, 20:59
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Solo ejecuta la primera consulta MySQL

Buenas! resulta que estaba con un pequeño proyecto de PHP en el que mando una serie de parámetros a un fichero php a través de un formulario y este usa esos parámetros para conectarse a la base de datos y hacer 2 cosas: crear tablas e insertar unos datos en una de las tablas.

El problema es el siguiente. Este es el código del fichero que procesa los datos:
Código PHP:
<?php
    
    
include('../lib/facade.php');
    include(
'../lib/twigData.php');
    
    
//Datos administrador del sitio
    
$userAdmin $_POST['userAdmin'];
    
$passAdmin $_POST['passAdmin'];
    
    
//Datos conexión hosting
    
$userDB $_POST['userDB'];
    
$passDB $_POST['passDB'];
    
$nameDB $_POST['nameDB'];
    
$serverName $_POST['serverName'];
    
    
$conexion conectar($serverName$userDB$passDB$nameDB);
    
    if(!
$conexion){
        echo 
$twig->render('install/error.html', array('errorMng' => 'Error al conectarse a la base de datos.'));
    } else {           
        
        
/**** CREAMOS LAS TABLAS EN LA BASE DE DATOS ****/
        
$ficheroTablas fopen("tablas.sql""r");
        
$lecturaFicheroTablas fread($ficheroTablasfilesize("tablas.sql"));
        
$resultCrearTablas crearTablas($conexion$lecturaFicheroTablas);
        
fclose($ficheroTablas);
        
        
/**** INSERTAMOS EL USUARIO ADMINISTRADOR EN LA TABLA ****/
        
$passAdminMd5 md5($passAdmin); //clave cifrada en md5             
        
$resultInsertAdmin insertarAdmin($conexion$userAdmin$passAdminMd5);
desconectar($conexion);
}
?>
Y este es el facade.php donde tengo las funciones que interactuan con la base de datos:
Código PHP:
<?php

/******************************************** FUNCIONES INSTALACIÓN ********************************************/
    
function conectar($serverName$userDB$passDB$nameDB){    
        
$mysql = new mysqli($serverName$userDB$passDB$nameDB);    
        if (
$mysql->connect_errno) {
            return 
false;
        } else {
            return 
$mysql;
        }    
    }
    
    
/**** cerrar conexion con la base de datos ****/
    
function desconectar($conexion){
        
$conexion->close();
    }
    
    
/**** crear tablas en la base de datos ****/
    
function crearTablas($mysql$lecturaFicheroTablas){     
        
$resultCrearTablas $mysql->multi_query($lecturaFicheroTablas);
        if(!
$resultCrearTablas){
            return 
false;
        }
        return 
true;
    }
    
    
/**** crear usuario administrador ****/
    
function insertarAdmin($mysql$userAdmin$passAdminMd5){
        
$consInsertAdmin "INSERT INTO administrador (nombreAdmin, passAdmin, ultimaConexion) VALUES ('$userAdmin','$passAdminMd5', 'null');";
        
$resultInsert $mysql->query($consInsertAdmin);
        if(!
$resultInsert){
            return 
false;
        }
        return 
true;
    }

?>
El problema que tengo es que solo me ejecuta bien la primera consulta, la de crear las tablas pero la de insertar el usuario no. Probé a poner primero la de insertar el usuario y me la ejecutó bien, pero no me ejecutó la siguiente.
Es como si al ejecutar la primera consulta perdiera el valor de la variable $conexion y ya no sirviera para realizar mas consultas...

¿Alguien me podría ayudar a resolver el problema? :S

Gracias!
  #2 (permalink)  
Antiguo 08/03/2013, 10:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Solo ejecuta la primera consulta MySQL

Te fijaste si da error mysql_error ?
  #3 (permalink)  
Antiguo 08/03/2013, 11:25
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Solo ejecuta la primera consulta MySQL

Cita:
Iniciado por walterdevel Ver Mensaje
Te fijaste si da error mysql_error ?
No no, la función conectar me ha hace bien, me devuelve la conexión y la uso para ejecutar la función crearTablas e insertarAdmin en ese orden, el problema es que solo me ejecuta la primera función, la ya no la ejecuta y si cambio el orden sigue ejecutando correctamente la primera pero la segunda no.. :S
  #4 (permalink)  
Antiguo 08/03/2013, 11:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Solo ejecuta la primera consulta MySQL

Podes probar volver a conectar antes de la ejecucion de la segunda funcion, por alguna razon se debe estar desconectando.
  #5 (permalink)  
Antiguo 08/03/2013, 14:23
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Solo ejecuta la primera consulta MySQL

Cita:
Iniciado por walterdevel Ver Mensaje
Podes probar volver a conectar antes de la ejecucion de la segunda funcion, por alguna razon se debe estar desconectando.
Si me vuelvo a conectar antes de la segunda función si que me la ejecuta correctamente..pero no queda un poco sucio estar conectándome cada vez que tenga que realizar una consulta? :S porqué se me desconecta si no tengo ningún $conexion->close() ? ><
  #6 (permalink)  
Antiguo 08/03/2013, 15:17
 
Fecha de Ingreso: abril-2010
Ubicación: Cancun
Mensajes: 88
Antigüedad: 14 años
Puntos: 2
Respuesta: Solo ejecuta la primera consulta MySQL

Y si le quitas el desconectar($conexion); y verificas que pasa
  #7 (permalink)  
Antiguo 08/03/2013, 18:19
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Solo ejecuta la primera consulta MySQL

Cita:
Iniciado por eduardomxm Ver Mensaje
Y si le quitas el desconectar($conexion); y verificas que pasa
Eso hice también pero me sigue pasando lo mismo :S
  #8 (permalink)  
Antiguo 09/03/2013, 20:56
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Solo ejecuta la primera consulta MySQL

Lo he solucionado creando una nueva conexión cada vez que llamo a una función...no me parece una solución muy limpia pero me hace el apaño jeje. Gracias! :D

Etiquetas: ejecuta, formulario, html, mysql, primera, sql, tabla
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 16:03.