Foros del Web » Programando para Internet » PHP »

¿Porque no funciona la funcion mysql_query dentro de mi clase?

Estas en el tema de ¿Porque no funciona la funcion mysql_query dentro de mi clase? en el foro de PHP en Foros del Web. Buenas, soy nuevo en esto de los foros, tengo una duda y es que estoy aprendiendo poo en php, resulta que tengo la clase login ...
  #1 (permalink)  
Antiguo 26/09/2014, 18:57
 
Fecha de Ingreso: septiembre-2014
Mensajes: 13
Antigüedad: 9 años, 6 meses
Puntos: 0
¿Porque no funciona la funcion mysql_query dentro de mi clase?

Buenas, soy nuevo en esto de los foros, tengo una duda y es que estoy aprendiendo poo en php, resulta que tengo la clase login el cual recibe los datos del post para que entre un usuario a la pagina y tengo la clase administradordb que pretendo hacerla funcionar tanto como para mysql como para mysqli.

El problema es que al utilizar la funcion mysql_query dentro de login funciona, en la linea que esta comentada, pero en la que esta sin comentar no funciona

Código PHP:
    public function __construct($usuario,$contraseña)
    {
        
$BaseDeDatos=new AdministradorDb();
        
$this->conexion=$BaseDeDatos->conectar('mysql');
        
$BaseDeDatos->seleccionardb('apis_magento');
        
$sql='SELECT * FROM `usuarios` WHERE usuario=\'' $usuario '\' AND password=\'' $contraseña '\';';
        
//$resultado = mysql_query($sql,$this->conexion) or die( "Error en : " . mysql_error() );
        
$resultado=$BaseDeDatos->consulta($sql,$this->conexion);
        
$contador=mysql_num_rows($resultado);

        if (
$contador>0)
        {
            
header('location: ../admin/resumen');
        }
        else
        { 
            echo 
"No registrado <br>"print_r($this); // MODIFICAR ESTO PARA IR AL INDEX Y MOSTRAR layout 2
        
}
    } 

Esta es la funcion consulta de la clase administradordb

Código PHP:
    public function consulta($sql,$con_conexion)
    {
        
$this->ultima_consulta=$sql;

        switch(
$this->tipo_db)
        {
            case 
'mysql'// conexion mysql
            
return $this->resultado=mysql_query($sql,$con_conexion) or die( "Error en : " mysql_error() );
            break;

            case 
'mysqli':    
            return 
$this->conexiondb = new mysqli($host$usuario$password'mi_bd');
            break;

            default:
            echo 
"Error: No se selecciono el tipo de base de datos.";
        }
    } 
De verdad muchas gracias si me pueden hacer entender el porque me genera el error: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ....
  #2 (permalink)  
Antiguo 26/09/2014, 19:38
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: ¿Porque no funciona la funcion mysql_query dentro de mi clase?

Por lo que veo $this->tipo_db no esta definido por lo que el switch esta saltando al default.

Define $this->tipo_db con el modo de conexion que queres utilizar para que el switch lo interprete
  #3 (permalink)  
Antiguo 26/09/2014, 20:39
 
Fecha de Ingreso: septiembre-2014
Mensajes: 13
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: ¿Porque no funciona la funcion mysql_query dentro de mi clase?

Gracia spor tu respuesta Maganius, sin embargo si esta definida
aca la funcion conectar:


Código PHP:
Ver original
  1. public function conectar($tdb='mysql')
  2.     {
  3.         $this->tipo_db=$tdb;
  4.         switch($this->tipo_db)
  5.         {
  6.             case 'mysql': // conexion mysql
  7.             //print_r($this->tipo_db);
  8.                 return $this->conexiondb = mysql_connect($this->host, $this->usuario, $this->password);
  9.                 if (!$this->conexion) $this->mensaje(mysql_error());
  10.             break;
  11.             case 'mysqli': 
  12.    
  13.                 return $this->conexion = new mysqli($this->host, $this->usuario, $this->password, 'mi_bd');
  14.             break;
  15.             default:
  16.                 $this->conexion="";
  17.        
  18.         }
  19.     }//fin funcion conectar
  #4 (permalink)  
Antiguo 26/09/2014, 21:20
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, 4 meses
Puntos: 2658
Respuesta: ¿Porque no funciona la funcion mysql_query dentro de mi clase?

El mensaje de error expresa que esa función debe recibir un sólo parámetro, y tu le estás poniendo dos.
Por otro lado, no me parece buena idea usar una extensión tan obsoleta para PHP.
¿Por qué no usas la MYSQLI?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/09/2014, 09:32
 
Fecha de Ingreso: septiembre-2014
Mensajes: 13
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: ¿Porque no funciona la funcion mysql_query dentro de mi clase?

El mensaje me dice es que de parámetro esperaba un recurso y le esta devolviendo es un booleano pero no entiendo porque y bueno si tienes razon es vieja pero lo estoy haciendo por compatibilidad

Etiquetas: mysql, mysql_query, 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 06:58.