Foros del Web » Programando para Internet » PHP »

Problemas al usar mysqli_real_escape_string

Estas en el tema de Problemas al usar mysqli_real_escape_string en el foro de PHP en Foros del Web. Hola, buenas noches, Tengo problemas al usar mysqli_real_escape_string, según estoy siguiendo la instrucción de como usarlo pero siempre me marca error, tengo lo siguiente: Código ...
  #1 (permalink)  
Antiguo 17/10/2021, 19:38
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Problemas al usar mysqli_real_escape_string

Hola, buenas noches,

Tengo problemas al usar mysqli_real_escape_string, según estoy siguiendo la instrucción de como usarlo pero siempre me marca error, tengo lo siguiente:

Código PHP:
    require("class/class-conectionMySQL.php"); 
    require(
"class/class-clientOperators.php");
    require(
"functions/function_protected_data.php");

    
$newConn = new conecctionMySQL();
    
$newConn -> createConection();

    if(isset(
$_POST['add-client'])){
        
        
$obj = new clientOperators();

        
$obj -> client $_POST['client'];
        
$obj -> rfc $_POST['rfc'];
        
$obj -> address $_POST['address'];
        
$obj -> countries $_POST['countries'];
        
$obj -> code $_POST['code'];
        
$obj -> zones $_POST['zones'];
        
$obj -> city $_POST['city'];
        
$obj -> phone $_POST['phone'];
        
$obj -> email $_POST['email'];
        
$obj -> date_update date('Y-m-d H:m:s');
        
        
$obj -> Insert();
    } 
entonces, estoy tratando con lo siguiente:

Código PHP:
$obj -> client mysqli_real_escape_string($newConn$_POST['client']); 
y me marca:

Código PHP:
PHP Fatal error:  Uncaught TypeErrormysqli_real_escape_string(): Argument #1 ($mysql) must be of type mysqli, conecctionMySQL given in ... 
incluso si trato de usar la función con POO:

Código PHP:
        $client $newConn -> real_escape_string($_POST['client']);
        
$obj -> client $client
y me marca:

Código PHP:
PHP Fatal error:  Uncaught ErrorCall to undefined method conecctionMySQL::real_escape_string() in ... 
¿Saben donde tengo el error? De antemano, gracias por sus comentarios.

¡Excelente inicio de semana!
  #2 (permalink)  
Antiguo 18/10/2021, 01:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Problemas al usar mysqli_real_escape_string

Parece ser que estás pasando una instancia de tu clase de conexión en lugar de la instancia de la conexión en sí. El método createConection() tendría que devolver la instancia de la conexión, la cual asignarías a una variable y así podrás emplearla.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 18/10/2021, 09:09
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas al usar mysqli_real_escape_string

Hola Alexis88, gracias por responder!

Apenas estoy "aprendiendo" por así decir la POO, antes era muy cerrado en solo programar en forma de procedimientos :/

Por ello, ¿me podrías explicar un poco mejor lo que me comentas? Al momento de instancias lo que requiero.

Mi archivo de conexión es este:


Código PHP:
class conecctionMySQL{
        
        private 
$host;
        private 
$user;
        private 
$password;
        private 
$conn;
        
        public function 
__construct(){
            
            require_once(
"config/config-db.php");
            
            
$this -> host HOST;
            
$this -> user USER;
            
$this -> password PASSWORD;
            
$this -> database DATABASE;
        }
        
        public function 
createConection(){
            
            
$this -> conn = new mysqli($this -> host$this -> user$this -> password$this -> database);
            
            if(
$this -> conn -> connect_errno) {
                
                die(
"Error al conectarse a MySQL: (" $this -> conn -> connect_errno ") " $this -> conn -> connect_error);
             
            }
        }
        
        public function 
executeQuery($query){
        
            
$result $this -> conn -> query($query);
                return 
$result;
        }

        public function 
getCountAffectedRows(){

            return 
$this -> conn -> affected_rows;
        }
  
        public function 
getRows($query){

            return 
$query -> fetch_row();
        }
        
        public function 
closeConnection(){
            
            
$this -> conn -> close();
        }
        
        public function 
setFreeResult$query ){
            
            
$query -> free_result();
        }
    } 
Saludos!
  #4 (permalink)  
Antiguo 18/10/2021, 14:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Problemas al usar mysqli_real_escape_string

Tu variable de conexión está en esta línea:

Código PHP:
Ver original
  1. $this -> conn = new mysqli($this -> host, $this -> user, $this -> password, $this -> database);

Si retornas esa variable (que en realidad es un atributo) y la asignas a otra que se llame, por ejemplo, $conexion, entonces podrás utilizarla en la función de escape.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 18/10/2021, 17:16
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas al usar mysqli_real_escape_string

Que des.... complicado al inicio xD

Hice lo siguiente basándome en la instrucción que me diste y leyendo un poco más sobre el tema :D

En el archivo de conexión hice la siguiente función:

Código PHP:
public function real_escape_string($string) {
    
    return 
$this -> conn -> real_escape_string($string);

y en el archivo donde evalúo los inputs:

Código PHP:
   if(isset($_POST['add-client'])){
        
        
$obj = new clientOperators();        

        
$obj -> client $newConn -> real_escape_string(($_POST['client']));
        
$obj -> rfc $newConn -> real_escape_string($_POST['rfc']);
        
$obj -> address $newConn -> real_escape_string($_POST['address']);
        
$obj -> countries $newConn -> real_escape_string($_POST['countries']);
        
$obj -> code $newConn -> real_escape_string($_POST['code']);
        
$obj -> zones $newConn -> real_escape_string($_POST['zones']);
        
$obj -> city $newConn -> real_escape_string($_POST['city']);
        
$obj -> phone $newConn -> real_escape_string($_POST['phone']);
        
$obj -> email $newConn -> real_escape_string($_POST['email']);
        
$obj -> date_update date('Y-m-d H:m:s');
        
        
$obj -> Insert();
    } 
y bueno, ya funcionó :D

Te agradezco por tu ayuda y comentarios Alexis88 :D

Saludos!!

Etiquetas: usar
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 14:06.