Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema con consulta mysql

Estas en el tema de problema con consulta mysql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola gente como estan despues de mucho vuelvo a molestarlos, con una pavada pero bueno... me tiene loco y no le encuentro la vuelta, esto ...
  #1 (permalink)  
Antiguo 13/05/2010, 13:28
 
Fecha de Ingreso: octubre-2009
Mensajes: 42
Antigüedad: 14 años, 6 meses
Puntos: 1
problema con consulta mysql

hola gente como estan despues de mucho vuelvo a molestarlos, con una pavada pero bueno... me tiene loco y no le encuentro la vuelta, esto tiene como objetivo registrar un usuario en una pagina ,muestro de donde me parece que empieza el problema, es ta clase hace de nexo entre la base y el programa y a esta le llegan tres paramatros para que trabaje, estos son $username, $passwd y $mail. Todo va bien hasta que se topa con la sentencia en donde sale $insertarStr la cual va a para a la clase conecta que se muestra mas abajo, porque al hacer un debug con netbeans muestra que se pasan perfectamente los datos que contiene las variables pero al llegar a la funcion consultar de la clase conecta el contenido de la variable $insertarStr falla, y algo raro cuando lo probe por primera vez me tomo el contenido de la variable $insertar('insert into usuario(nombUsuario, clave, correo) values("$usrname", "$passwd", "$mail")') pero en la base de datos lo que aparecio fue $usrname, $passwd y $mail es decir las variables del formulario donde cargo los datos y no su contenido crei que eran las comillas pero si se las saco creo que da error tambien asi, no se que hacer si me pueden dar una mano se los agradecere y disculpen por lo extenso.
saludos

Código PHP:
 require_once('conexion.php');

    class 
Autentica
    
{
            private 
$servidor'localhost';
            private 
$usuario'gerardo';
            private 
$clave'gerardo';
            private 
$baseDatos'marcadores';
            private 
$base;

            
//Asi se crea y usa un objeto dentro de una clase
            
function __construct()
            {
                    
$this-> base= new Conecta($this-> servidor$this-> usuario$this-> clave$this-> baseDatos);
            }

            function 
registrar($usrname$passwd$mail)
            {
                    try
                    {
                            
$consultaStr'select * from usuario where nombUsuario= "$usrname"';
                            
$this-> base->consultar($consultaStr);
                    }
                    catch (
Exception $e)
                    {
                            
$msg$e->getMessage();
                            echo 
$msg;
                            exit();
                    }

                    if(
mysql_num_rows>0)
                    {
                            echo 
'El ususario que intenta registrar ya existe';
                            exit();
                    }

                    try
                    {
                            
$insertarStr'insert into usuario(nombUsuario, clave, correo)         values("$usrname", "$passwd", "$mail")';
                            
$this-> base->consultar($insertarStr);
                    }
                    catch (
Exception $e)
                    {
                            
$msg$e-> getMessage();
                            echo 
$msg;
                            exit();
                    }

            }
    } 
Código PHP:
class Conecta
    
{
            private 
$servidor;
            private 
$usuario;
            private 
$clave;
            private 
$baseDatos;
            private 
$abrirConexion;

            function 
__construct($servidor$usuario$clave$baseDatos)
            {
                    
$this-> servidor$servidor;
                    
$this-> usuario$usuario;
                    
$this-> clave$clave;
                    
$this-> baseDatos$baseDatos;

                    try 
//se usa este bloque donde se de puede producir un error(esta conectado a throw new Exception)
                    
{
                            
$this-> conectar_base();
                    }
                    catch (
Exception $e)
                    {
                            
$msg$e->getMessage();
                            echo 
$msg;
                            exit();
                    }

            }

            public function 
conectar_base()//ABRE conexión con la base
            
{
                            
$this->abrirConexion= @mysql_connect($this->servidor$this->usuario$this->clave);

                            if(!
$this->abrirConexion)
                            {
                                    throw new 
Exception('<b>ERROR::</b> No se ha podido establecer la
                                                                            conexion con el SERVIDOR, por favor intente mas tarde.<br>'
);
                                    exit();
                            }

                            
$enlazarBase= @mysql_select_db($this->baseDatos$this->abrirConexion);

                            if(!
$enlazarBase)
                            {
                                    throw new 
Exception('<b>ERROR::</b>No sea podido establecer conexion con
                                                                            la BASE DE DATOS solicitada, por favor intente más tarde.<br>'
);
                                    exit();
                            }
            }

            public function 
desconectar_base()//CIERRA la conexión con la base
            
{
                    
$cerrarConexion= @mysql_close($this->abrirConexion);
            }

            public function 
consultar($consulta)//usar esta func en caso de una petición mas específica a la base
            
{
                    
$this->resultado= @mysql_query($consulta);

                    if(!
$this->resultado)
                    {
                            throw new 
Exception('<b>ERROR::</b>No se ha podido realizar la peticion.<br>');
                            exit();
                    }
            }

            public function 
extraer_registro()//EXTRAE registro o fila de la base según consulta
            
{
                    if(
$fila= @mysql_fetch_assoc($this->resultado))
                    {
                            return 
$fila;
                    }
                    else
                    {
                            return 
false;
                    }
            }
    } 
  #2 (permalink)  
Antiguo 13/05/2010, 13:37
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: problema con consulta mysql

Si, efectivamente es un problema con las comillas :) cambia las comillas simples por las dobles, prueba así

Código PHP:
$insertarStr"insert into usuario(nombUsuario, clave, correo)         values($usrname, $passwd, $mail)"
Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 15/05/2010, 15:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 42
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: problema con consulta mysql

hola syncronice, gracias por tu respuesta probe como me digiste, de hecho ya lo habia hecho antes asi:

Código PHP:
$consultaStr"select * from usuario where nombUsuario= $usrname"
y luego

Código PHP:
$insertarStr"insert into usuario(nombUsuario, clave, correo) values($usrname, $passwd, $mail)"
el tema es que ahora no pasa la primera consulta, es decir $consulta, lo bueno es que ahora me pasan los contenidos, antes en la base de datos me quedaba vez de un nombre(el cual era contenido por la variable $username)el nombre de la propia variable.

ej:

antes si hacia la asignacion $username=pepito
lo que se guardaba en la base era $username y no pepito ahora si pasa el contenido de la variable, es decir pepito pero al momento de guardarlo o mas bien antes al momento de verificar si existe un pepito da error y dice que la peticion no se puede realizar

si se te ocurre algo mas o me podes orientar de alguna otra forma porque hace como dos mese que estoy estancado con esto y no puedo seguir con un curso de php que estoy haciando.

disculpa las molestias

saludos y gracias
  #4 (permalink)  
Antiguo 17/05/2010, 02:49
 
Fecha de Ingreso: marzo-2006
Mensajes: 44
Antigüedad: 18 años, 1 mes
Puntos: 4
Respuesta: problema con consulta mysql

Al ser las variables cadenas de texto, tienes que ponerlas entre comillas simples para las consultas a la base de datos:

Código PHP:
$insertarStr"insert into usuario(nombUsuario, clave, correo) values('$usrname', '$passwd', '$mail')"
Saludos
  #5 (permalink)  
Antiguo 17/05/2010, 12:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 42
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: problema con consulta mysql

hola, si asi es davidcb, eso acabo de hacer y dio resultado gracias a todos por darme una mano y gracias a que existe este foro
saludos
  #6 (permalink)  
Antiguo 17/05/2010, 12:36
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: problema con consulta mysql

Cita:
Iniciado por mag55 Ver Mensaje
hola, si asi es davidcb, eso acabo de hacer y dio resultado gracias a todos por darme una mano y gracias a que existe este foro
saludos
Me alegra saber que entre todos hemos podido servirte de ayuda para conseguir solucionar el problema.

Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill

Etiquetas: mysql
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 22:58.