Foros del Web » Programando para Internet » PHP »

Clase para conexion

Estas en el tema de Clase para conexion en el foro de PHP en Foros del Web. Buena tarde; esto realizando un clase para realizar la conexión y consultas pero me da este error Warning: mysqli_query() expects parameter 1 to be mysqli, ...
  #1 (permalink)  
Antiguo 16/10/2018, 14:59
Avatar de trofserpiente  
Fecha de Ingreso: julio-2012
Ubicación: Lerida
Mensajes: 212
Antigüedad: 6 años, 4 meses
Puntos: 1
Exclamación Clase para conexion

Buena tarde; esto realizando un clase para realizar la conexión y consultas pero me da este error

Warning: mysqli_query() expects parameter 1 to be mysqli, null given


Código PHP:
class conexMySQLi{

        var 
$host="localhost";
        var 
$user="root";
        var 
$pass="la";
        var 
$db_="system";


var 
$conexion; var $total_consultas;

    public function 
MySQLi(){

        
$this->conexion mysqli_connect($this->host$this->user$this->pass $this->db_)
            or die(
"No se pudo conectar con la base de datos");

         if(
$this->conexion){
              echo 
"Conexión Correcta "."<br/>";
            
mysqli_query($this->conexion,"SET NAMES 'utf8'");
          }else{
              echo 
'MySQLi Error: ' mysqli_errno($this->conexion);
          }
        return 
$conexion;
    }


      public function 
query(){

        
$resultado mysqli_query($this->conexion,"SELECT * FROM cm_personas");

        return 
$resultado;
            
mysqli_close();

      }



llamo la clase de la siguiente forma

Código PHP:
$AB=new conexMySQLi();
//vicula la conexion

echo $AB->query(); 

gracias; de antemano

__________________
Luis Alfonso Cruz Valbuena
[email protected]
  #2 (permalink)  
Antiguo 16/10/2018, 16:38
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.975
Antigüedad: 5 años, 4 meses
Puntos: 373
Respuesta: Clase para conexion

¿Pórque quieres hacer eso? si mysqli ya tiene una clase que puedes utilizar.
Código PHP:
Ver original
  1. $config = [
  2.     'host'=> 'localhost',
  3.     'username' => 'root',
  4.     'password' => '',
  5.     'database' => 'database',
  6. ];
  7.  
  8. $mysqli = new mysqli(...array_values($config));
  9. $mysqli->query('select * from some');
  10. // mas código
Si el motivo es otro, explica cual es para ver de que forma te podemos ayudar
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 16/10/2018 a las 22:30
  #3 (permalink)  
Antiguo 16/10/2018, 21:48
 
Fecha de Ingreso: abril-2006
Mensajes: 148
Antigüedad: 12 años, 6 meses
Puntos: 14
Respuesta: Clase para conexion

existe 2 grandes errores en tu codigo PHP, tu codigo por lo visto es influenciado por tutoriales sobre PHP 4.4 hasta php 5.3,

el otro error es que debes ser conciente de como funciona el POO y tener en cuenta sobre los cambios que este tienen a lo largo de las versiones,

el error que te da

Código PHP:
Ver original
  1. public function query(){
  2.  
  3.         $resultado = mysqli_query($this->conexion,"SELECT * FROM cm_personas");
  4.  
  5.         return $resultado;
  6.             mysqli_close();
  7.  
  8.       }
es por que $this->conexion retorna NULO

y te retorna nulo, por que tu clase no contiene el CONSTRUCTOR
Código PHP:
Ver original
  1. public function MySQLi(){
  2.  
  3.         $this->conexion = mysqli_connect($this->host, $this->user, $this->pass , $this->db_)
  4.             or die("No se pudo conectar con la base de datos");
  5.  
  6.          if($this->conexion){
  7.               echo "Conexión Correcta "."<br/>";
  8.             mysqli_query($this->conexion,"SET NAMES 'utf8'");
  9.           }else{
  10.               echo 'MySQLi Error: ' . mysqli_errno($this->conexion);
  11.           }
  12.         return $conexion;
  13.     }
eso era un constructor , pero en versiones antiguas de PHP, y actualmente solo pasa a ser un metodo mas de tu clase, actualmente, las clases en php, todos los metodos denomiados "magicos" que son los constructores,setters,getters,destructores y demas siempre empiezan por doble guion bajo "__"

date una leida al manual

http://php.net/manual/es/language.oop5.decon.php


actualmente encontraras muchos tutoriales realizados, en su momento con la version de php de esa epoca, toma en cuenta ello, con el paso del tiempo las versiones tuvieron a veces grandes cambios



La zona horaria es GMT -6. Ahora son las 17:27.