Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794

    classe per connessione al db

    buonasera a tutti , sto cercando di adattare una classe per la connessione al database con mysqli
    tutto in un unico files , cerco di spiegere :

    definisco le costanti dove inserire i parametri del server tipo host user pass e nome database,

    da varifiche si connette al database ma se io vado e scrivo un user errato o nome database errato mi genera un errore il php invece di generasre il comando che voglio io .
    posto la classe
    Fatal error: Uncaught Error: Call to undefined method DataBase::connect_error()
    Codice PHP:

    define
    ("DB_HOST"      ,"localhost");define("DB_USER"      ,"root");define("DB_PASS"      ,"");define("DB_NAME"      ,"test");define("DB_CACHE_TIME",0);define("TABLE_PREFIX" ,"rc_");define("DB_ERROR_MAIL","");define("DB_PORT"      ,"3306");define("PCONNECT"     false);
    if(!empty(
    $db_host)){$db_host '';}else{$db_host DB_HOST ;}if(!empty($db_user)){$db_user '';}else{$db_user DB_USER ;}if(!empty($db_pass)){$db_pass '';}else{$db_pass DB_PASS ;}if(!empty($db_name)){$db_name '';}else{$db_name DB_NAME ;}if(!empty($db_cache_time)){$db_cache_time '';}else{$db_cache_time DB_CACHE_TIME ;} 
    e qua la classe
    Codice PHP:
    class DataBase {
    public 
    $dbhost            "";public $dbuser         "";public $dbpass            "";public $dbname         "";public $db_cache_time    0;public $connect        "";public $query            "";public $dbport            "";

    function 
    DataBase()    {        if(defined("DB_HOST")){$this->dbhost DB_HOST ; }        if(defined("DB_USER")){$this->dbuser DB_USER ; }        if(defined("DB_PASS")){$this->dbpass DB_PASS ; }        if(defined("DB_NAME")){$this->dbname DB_NAME ; }        if(defined("DB_PORT")){$this->dbport DB_PORT ; }    } function __construct(){global $db_host ,$db_user ,$db_pass ,$db_name,$db_cache_time ;
    $this->dbhost        $db_host ;$this->dbuser        $db_user ;$this->dbpass        $db_pass ;$this->dbname        $db_name ;$this->db_cache_time $db_cache_time ;}function  connect(){global $db_host ,$db_user ,$db_pass ,$db_name,$db_cache_time ;
    $this->query = new mysqli($this->dbhost ,$this->dbuser ,$this->dbpass ,$this->dbname  )or die($this->connect_error); if( $this->query  == true ){return true ;}else{return false ;} }

    function 
    dberror( ){ if ($this->query) {  return $this->connect_error$this->query ); } return $this->connect_error();}}
    $con = new DataBase();
    echo 
    '<pre>'var_dump$con->connect());  echo '</pre>';echo '<pre>';print_r$con->dberror());echo '</pre>'
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794
    salve a tutti confido in un vostro aiuto non ci salto fuori grazie ancora
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  3. #3
    almeno il codice ordinato...

    codice:
    define("DB_HOST", "localhost");
    define("DB_USER", "root"); 
    define("DB_PASS", ""); 
    define("DB_NAME", "test"); 
    define("DB_CACHE_TIME", 0); 
    define("TABLE_PREFIX", "rc_"); 
    define("DB_ERROR_MAIL", ""); 
    define("DB_PORT", "3306"); 
    define("PCONNECT", false);
    
    
    if (!empty($db_host)) {
        $db_host = '';
    } else {
        $db_host = DB_HOST;
    }
    if (!empty($db_user)) {
        $db_user = '';
    } else {
        $db_user = DB_USER;
    }
    if (!empty($db_pass)) {
        $db_pass = '';
    } else {
        $db_pass = DB_PASS;
    }
    if (!empty($db_name)) {
        $db_name = '';
    } else {
        $db_name = DB_NAME;
    }
    if (!empty($db_cache_time)) {
        $db_cache_time = '';
    } else {
        $db_cache_time = DB_CACHE_TIME;
    }
    codice:
    <?
    
    
    class DataBase {
        public $dbhost = ""; 
        public $dbuser = ""; 
        public $dbpass = ""; 
        public $dbname = ""; 
        public $db_cache_time = 0; 
        public $connect = ""; 
        public $query = ""; 
        public $dbport = "";
    
    
        function DataBase() {
            if (defined("DB_HOST")) {
                $this->dbhost = DB_HOST;
            } 
            if (defined("DB_USER")) {
                $this->dbuser = DB_USER;
            } 
            if (defined("DB_PASS")) {
                $this->dbpass = DB_PASS;
            } 
            if (defined("DB_NAME")) {
                $this->dbname = DB_NAME;
            } 
            if (defined("DB_PORT")) {
                $this->dbport = DB_PORT;
            }
        } 
        
        function __construct() {
            global $db_host,
            $db_user,
            $db_pass,
            $db_name,
            $db_cache_time;
            $this->dbhost = $db_host; $this->dbuser = $db_user; $this->dbpass = $db_pass; $this->dbname = $db_name; $this->db_cache_time = $db_cache_time;
        }
        
        function connect() {
            global $db_host,
            $db_user,
            $db_pass,
            $db_name,
            $db_cache_time;
            $this->query = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname) or die($this->connect_error); if ($this->query == true) {
                return true;
            } else {
                return false;
            }
        }
    
    
        function dberror() {
            if ($this->query) {
                return $this->connect_error($this->query);
            } return $this->connect_error();
        }}
    
    
    $con = new DataBase();
    echo '<pre>'; 
    var_dump($con->connect()); 
    echo '</pre>'; 
    echo '<pre>'; 
    print_r($con->dberror()); 
    echo '</pre>';

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794
    Grazie mille per l aiuto ! Il codice io quando l ho postato era ordinato il bbcode del forum l hanno impaginato così Grazie mille
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794
    buongiorno a tutti non riesco a saltarci fuori mi da ugualmente errori e non capisco perche ?
    cerco di ripostare il codice sperando che il bbcode me lo formatti in ordine ....
    codice:
    class DataBase {
    public $dbcore;
    public $dbhost ='localhost';
    public $dbport;
    public $dbuser = 'root';
    public $dbpass;
    public $dbname;
    public $db_countquery = 0;
    public $db_countrecord = 0;
    public $db_cache_time = 0; 
    public $dbquery = array();
    public $prefix_tab;
    qui passo i dati alla classe tremite consctuct
    codice:
         function __construct() 
        {
         if(defined("DATABASE_HOST")) {     
            $this->dbhost = DATABASE_HOST;
         }
         if(defined("DATABASE_PORT")) {       
           $this->dbport = DATABASE_PORT;
         }
         if(defined("DATABASE_USER")) {       
          $this->dbuser = DATABASE_USER;
         }
         if(defined("DATABASE_PASSWORD")) {
           $this->dbpass = DATABASE_PASSWORD;
         }
         if(defined("DATABASE_NAME")) {    
           $this->dbname =  DATABASE_NAME ;
         } 
         $this->dbquery = array();
         
        }
    con questa funzione apro la connessione e le query
    codice:
     public   function connect() 
                 {
                   $this->dbquery  = new mysqli($this->dbhost, $this->dbuser , $this->dbpass, $this->dbname) ; 
              if ($this->dbquery == true) {
                return true ;
            } else {
                return  false ;
            } 
             }
     public  function query($sql) 
        {
            $result =     $this->query($sql,   $this->dbquery  );
            return $resul ;
        }
    codice:
    $dbcore = new DataBase;
    $dbcore->connect() ;
     
    echo '<pre>';
    print_r($dbcore->query("SELECT * FROM `user`")    );
    echo '</pre>';
    questo e l errore che mi genera e non riesco a saltarci fuori

    Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, string given in C:\xampp\htdocs\site\class\dbclass.php:76
    Stack trace:
    #0 C:\xampp\htdocs\site\class\dbclass.php(76): mysqli_query('SELECT * FROM `...', Object(mysqli))
    #1 C:\xampp\htdocs\site\global.php(19): DataBase->query('SELECT * FROM `...')
    #2 C:\xampp\htdocs\site\index.php(8): require_once('C:\\xampp\\htdocs...')
    #3 {main}
    thrown in C:\xampp\htdocs\site\class\dbclass.php on line 76
    Ultima modifica di rocco.mod; 25-03-2025 a 17:26
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    191
    Se con la libreria mysqli si utilizza l'oggetto mysqli per primo argomento mysqli::query.
    Prova modificando la funzione query della tua classe DataBase, spostando la variabile stringa $sql per secondo argomento. (Se invece di utilizzare la libreria mysqli si usa la libreria mysql ormai non più presente nelle recenti distribuzioni PHP).

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794
    grazie mille gentilissimo ! comunque ho risolto semplicemente non usando la classe ma usando semplicemente le funzioni di mysqli

    una volta che apro la connessione con
    codice:
    $connect = new  mysqli($HOST , $USER,$PASS ,$NAME);
    chiamo le funzioni con :
    codice:
    $connect->query("contenuto da selezionatre");
    e cosi sono riuscito a risolvere
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  8. #8

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,794
    ciao cos e ? un software per il php ? io uso dreamweaver cs3
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.