Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2020, 12:05
paulkees
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Problema actualizar class MySQL a MySQLi

Hola a todos... tengo una clase php, muy antigua, que me maneja el acceso de usuraios, y no me queda otra que actualizarla a MySQLi con mis escasos conocimientos de php, ya que mi Sitio depende de ella. Por favor, necesito ayuda u orientación para tratar de resolverlo.

En el archivo mi_classe.php tengo lo siguiente (pongo la parte del código donde se está frenando):

Código PHP:
<?php
require_once("db_config.php"); // this path works for me...

    
function Access_user($redirect true) {
        
$this->connect_db();
        if (empty(
$_SESSION['logged_in'])) {
            
$this->login_reader();
            if (
$this->is_cookie) {
                
$this->set_user($redirect);
            }
        }         
        if (isset(
$_SESSION['user'], $_SESSION['pw'])) {
            
$this->user $_SESSION['user'];
            
$this->user_pw $_SESSION['pw'];
        }
    }

    function 
check_user($pass "") {
        global 
$mylink;
        switch (
$pass) {
            case 
"new"
            
$sql sprintf("SELECT COUNT(*) AS test FROM %s WHERE email = %s OR login = %s"$this->table_name$this->ins_string($this->user_email), $this->ins_string($this->user));
            break;
            case 
"lost":
            
$sql sprintf("SELECT COUNT(*) AS test FROM %s WHERE email = %s AND active = 'y'"$this->table_name$this->ins_string($this->user_email));
            break;
            default:
            
$sql sprintf("SELECT COUNT(*) AS test FROM %s WHERE BINARY login = %s AND pw = %s AND active = 'y'"$this->table_name$this->ins_string($this->user), $this->ins_string($this->user_pw));
        }
        
//La siguienta parte la he modificado para adaptarla a MySQLi
        
$result $mylink->query($sql);
        
$row $result->fetch_assoc();
        if (
$row['test'] == 1) {
            return 
true;
        } else {
            return 
false;
        }
    }
    
//Función de conexión a la BD modificada para adaptarla a MySQLi
    
function connect_db() {
        
$mylink = new mysqli(DB_SERVERDB_USERDB_PASSWORD);
        
$mylink->select_db(DB_NAME);
        
$mylink->set_charset('utf8');        
    }
?>
Ahora bien, el proceso se frena y me tira este error: " Fatal error: Call to a member function query() on null in..." haciendo referencia a la linea:

Código PHP:
<?php

$result 
$mylink->query($sql);

?>
Interpreto que la consulta del query es nula porque no está recibiendo la conexión a la BD, y no me doy cuenta dónde está la falla.

Muchas gracias de antemano!