Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Mysqli non funziona

  1. #1

    Mysqli non funziona

    Buon giorno.
    Ho installato la versione 5.1.6 di php.
    Sul server linux ho le librerie già installate mysqli.so
    Apro il php.ini e vedo che la path dei moduli è abilitata "/usr/lib64/php/modules"
    Apro il mysqli.ini e l'estesione -> extension=mysqli.so è abilitata.

    Ma quando vado ad eseguire la connessione al db:
    Codice PHP:
    //parametri
    define('DATA_HOST''xxx.xxx.x.xx');
    define('DATA_UTENTE''m.rossi');
    define('DATA_PASS''sdk454515');
    define('DATA_DB''GESTIONE_DB_1');
    # classe per l'interazione con il database
    class DATA_Class {
    # definizione del costruttore
    function __construct() {
    #in questo modo
    /*$db = mysqli_connect(DATA_HOST, DATA_UTENTE, DATA_PASS);mysqli_select_db($db, DATA_DB);*/

    //oppure in quest'altro
    # connessione al DBMS->Object-oriented API connection
    //$db = new MySQLi(DATA_HOST, DATA_UTENTE, DATA_PASS, DATA_DB);
    # gestione errori
    /*if ($db->connect_errno) {    
    die($db->connect_error);
    }*/
    }

    Non si connette.
    Qual'è il problema?
    Grazie.

  2. #2
    qual è l'errore?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Riepilogo.
    Ho 3 pagine, la prima config.php
    Codice PHP:
    # definizione delle costanti per l'autenticazione al DBMS
    define('DATA_HOST''xxx.xxx.x.xx');
    define('DATA_UTENTE''m.rossi');
    define('DATA_PASS''sdk454515');
    define('DATA_DB''GESTIONE_DB_1');
    # classe per l'interazione con il database
    class DATA_Class {
    # definizione del costruttore
    function __construct() {
    $db = new MySQLi(DATA_HOSTDATA_UTENTEDATA_PASSDATA_DB);
    # gestione erroriif ($db->connect_errno) {die($db->connect_error);}}

    La seconda function.php
    Codice PHP:
    # inclusione del file di configurazione
    include 'config.php';
    class 
    iscrizioni {
    # definizione del costruttore
    public function __construct() {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
    }
    # metodo per l'autenticazione
    public function verifica_login($UTENT_LOGIN){
    $query $db->query("SELECT * FROM TBUTENTI_PROFILI WHERE U_AUTORIZZAZIONE_ID IS NOT NULL AND U_UTENTE_LOGIN='".$UTENT_LOGIN."'");        
    $rows $query->num_rows;
    if (
    $rows == 1){
    #..viene generata la sessione di login..
    $risultato                             mysqli_fetch_object($query);
    $_SESSION['login']                     = true;
    $_SESSION['UTENT_ID']                 = $risultato->UTENT_ID;
    //ecc. ecc.
    }
    }
    }
    //chiusura classe iscrizioni 
    Poi ho l'index.php, dove vado a gestire il tutto.

    A connettersi si connette(ho provato in maniera diversa), ma dato che voglio adottare questo metodo per gestire i dati, non capisco come mai non riesca a "vedere" la connessione, nonostante includa il file config.php nella pagina function.php.
    Grazie per il vostro aiuto.
    Ultima modifica di ANTAGONIA; 05-10-2015 a 12:52

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Si, ma l'errore qual'è? Inizia sempre dall'errore. Sono dell'idea che dovresti arrivare tu alle cause del problema, partendo dal messaggio di errore. Noi ti possiamo guidare. Inizia da http://php.net/manual/en/language.oop5.basic.php, poi guarda $query = $db->query( ...;

    Ultima modifica di .Kurt; 05-10-2015 a 14:17

  5. #5
    grazie.
    cmq provo a descrivere cosa facevo quando mi funzionava, ed ora che non da segni di vita.
    Codice PHP:
    //se nel config.php faccio cosi
    $db mysqli_connect(DATA_HOSTDATA_UTENTEDATA_PASS);
    mysqli_select_db($dbDATA_DB);
    if (
    mysqli_connect_errno()) {     
    echo 
    "Failed to connect to MySQL: " mysqli_connect_error(); 

    e poi nella pagina function.php
    Codice PHP:
    include 'config.php';

    class 
    iscrizioni {
    # definizione del costruttore    
    public function __construct()     {        
    # istanza della classe per la connessione al database        
    $data = new DATA_Class();    
    }
    # metodo per l'autenticazione      
    public function verifica_login($UTENT_LOGIN)      {

    $query    mysqli_query("SELECT * FROM TB_UTENTI_PROFILI WHERE U_UTENTE_LOGIN='".$UTENT_LOGIN."'");
    $conta     mysqli_num_rows($query);
    //ecc ecc 
    cosi funziona tutto.
    Il costruttore della "class iscrizioni", $data = new DATA_Class();, mi restituisce la connessione e quindi tutto ok.

    Ma se adotto la soluzione nel config.php dove creo il nuovo oggetto new mysqli(); nella function.php il costruttore non riconosce la connessione.

    Di sicuro non riesco a gestire la connessione attraverso il costruttore:
    Codice PHP:
    public function __construct()     {        
    # istanza della classe per la connessione al database        
    $data = new DATA_Class();    

    Grazie ancora.

  6. #6
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Hai letto cos'è/come usare $this in quella pagina?

  7. #7
    perfetto, ho fatto in questo modo, basandomi sul $this come mi avevi consigliato:

    Codice PHP:
    //in config.php
    class DATA_Class {    
    public 
    $connect;      
    # definizione del costruttore      
    function __construct() {
    # connessione al DBMS->Object-oriented API connection        
    $this->connect = new mysqli(DATA_HOSTDATA_UTENTEDATA_PASSDATA_DB);        
    # gestione errori        
    if ($this->connect->connect_errno) {            
    echo 
    "Failed to connect to MySQL: (" $this->connect->connect_errno ") " $this->connect->connect_error;        
    }   
    }

    in function.php
    Codice PHP:
    include 'config.php';

    class 
    iscrizioni extends DATA_Class{

    # definizione del costruttore
    public function __construct() {    
    parent::__construct();    
    # istanza della classe per la connessione al database    
    $data = new DATA_Class();
    }
    # metodo per l'autenticazione
    public function verifica_login($UTENT_LOGIN){
    $query $this->connect->query("SELECT * FROM.....
    }

    Ora funziona....
    Grazie mille, veramente molte grazie, buona giornata.

  8. #8
    ok ok, altro giro altra corsa.
    Il sito, chiamiamolo cosi si compone di una index.php, nella quale vengono richiamate, attraverso funzione jquery, altre pagine.php.
    In questo modo:
    Codice PHP:
    //in index.php
    # inclusione del file di funzione
    include 'php_oop/autenticazione/functions.php';
    # istanza della classe
    $iscrizioni = new iscrizioni();

    # verifico l'operatore autenticato
    $iscrizioni->verifica_login($_SESSION['UTENT_LOGIN']);
    //ecc ecc


    //nell'header ci sono tutti i file jquery.js, .css


    //nel body ho questo div, nel quale attraverso i link e funzioni jquery, vado a visualizzare tutte le pagine li dentro.
    <div id="cercaFile"></div
    Il problema che ho è, includo nella index.php il file function.php, e creo un nuovo oggetto
    Codice PHP:
    # istanza della classe
    $iscrizioni = new iscrizioni();

    # verifico l'operatore autenticato
    $iscrizioni->verifica_login($_SESSION['UTENT_LOGIN']); 
    Fin qui tutto ok.

    Nella function.php ho altri metodi che mi servono per altre pagine, e ho notato che, facendo come nell'esempio di seguito, i metodi non li riconosce, non li vede proprio.


    Esempio: in una delle altre pagine, tab_zona.php
    Codice PHP:

    # inclusione del file di funzione
    include 'php_oop/autenticazione/functions.php';
    # istanza della classe
    $iscrizioni = new iscrizioni();
    echo 
    $iscrizioni->indiri_uff(); 
    Il metodo "indiri_uff()" esegue una query, che mi deve stampare il nome dell'ufficio.
    Ma non lo fa perché?

    Grazie ancora.

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.