Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: msqli meglio di msql?

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    58

    msqli meglio di msql?

    Salve a tutti. Sto cominciando a entrare nel mondo PHP e ho una domanda relativa ad una guida presente sul vostro sito (n.b. vi consiglierei di aggiungere una sezione apposita dove raggruppare tutte le domande degli utenti inerenti alle vostre guide).

    Nello specifico la guida PHP e MySql ela parte di codice che necessita chiarimenti è la seguente (http://www.html.it/pag/16431/lautenticazione/ )

    Codice PHP:
    include "funzioni_mysql.php";
         
    // istanza della classe     
    $data = new MysqlClass();
         
    // chiamata alla funzione di connessione     
    $data->connetti(); 
    Praticamente usando una classe personalizzata chiamata per l'appunto MysqlClass() è possibile effettuare la connessione e verificarne la riuscita con poche righe di testo ed ogni volta che si richiede necessaria una connessione al DB basta richiamare queste poche righe.
    Ovviamente previa creazione della classe stessa nel modo seguente:
    Codice PHP:
    class MysqlClass {   // parametri per la connessione al database   
    private $nomehost "localhost";       
    private 
    $nomeuser "username";            
    private 
    $password "password";              
    // controllo sulle connessioni attive   
    private $attiva false;     
    // funzione per la connessione a MySQL   
    public function connetti()   {    
    if(!
    $this->attiva)    {     
    $connessione mysql_connect($this->nomehost,$this->nomeuser,$this->password);
    }else{         
      return 
    true;}     
    }

    Cosa succede invece se si usa la classe MySqli?

    In pratica per stabilire una connessione basta creare un oggetto

    Codice PHP:
    $mysqli = new mysqli('localhost''my_user''my_password''my_db'); 
    in questo modo e far seguire il debugging per verificare la riuscita della connessione o meno:

    Codice PHP:
    if (mysqli_connect_error()) {
         die(
    'Connect Error (' mysqli_connect_errno() . ') ' mysqli_connect_error()); }  
    echo 
    'Success... ' $mysqli->host_info "\n";  

    $mysqli->close(); 
    e il gioco è fatto.


    Ma quando si dovrà effettuare una nuova connessione si dovrà utilizzare molto più codice di quanto fatto utilizzando una classe personalizzata

    Codice PHP:
    include "funzioni_mysql.php";
         
    // istanza della classe     
    $data = new MysqlClass();
         
    // chiamata alla funzione di connessione     
    $data->connetti(); 
    Codice PHP:
    $mysqli = new mysqli('localhost''my_user''my_password''my_db');
    if (
    mysqli_connect_error()) {
         die(
    'Connect Error (' mysqli_connect_errno() . ') ' mysqli_connect_error()); }  
    echo 
    'Success... ' $mysqli->host_info "\n";  

    $mysqli->close(); 


    A questo punto mi domando, meglio MySql oppure meglio l'estensione MySqli????

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Meglio PDO

  3. #3
    IMHO: la classe MysqlClass è non ha senso (un singleton errato? ).

    mysqli non l'ho mai utilizzata. Essa è considerabile migliore per i motivi che trovi a questo link
    http://it.php.net/manual/en/mysqlinfo.api.choosing.php

    Cmq sia, attualmente il modo migliore per interagire con i database è tramite l'impiego del PDO.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    58
    ah, quindi pdo meglio di MySqli? Ma solo per il fatto che MySqli è utilizzabile solo con DB MySql? So che PDO è invece trasversale e utilizzabile anche con Postgres e MSSql

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    58
    Scusate ma possibile che usando MySqli oppure PDO ogni volta che si voglia stabilire una connessione si debbano anche riscrivere tutti i dati per la connessione del DB e anche del debugging per la verifica della connessione? Mentre invece usando una classe personalizzata tutte queste operazioni possono essere non ripetute ogni volta. Suggerimenti in merito?

  6. #6
    se strutturi bene il tuo codice non devi riscriverli sempre.

    Ti faccio l'esempio + casereccio.
    creati un file connessione.php
    Codice PHP:
    @mysql_connect('...''...''...') or die(mysql_error());
    @
    mysql_select_db(........) or die(mysql_error()); 
    e lo includi ad ogni necessità.
    ----------
    Bada bene: questo è il metodo più casereccio che per piccole applicazioni va più che bene. Poi ci sarebbero altre cose più complesse che potrebbero essere fatte (ad esempio una classe singleton fatta come si deve... ma occorre prendere un bel pò di dimestichezza con la oop).
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Originariamente inviato da kekko12
    Mentre invece usando una classe personalizzata tutte queste operazioni possono essere non ripetute ogni volta. Suggerimenti in merito?
    E' un falso problema....
    nella tua classe personalizzata la finzione connetti() e tutte le altre funzioni le puoi benissimo implementare usando mysqli!!!


    Originariamente inviato da kekko12
    Praticamente usando una classe personalizzata chiamata per l'appunto MysqlClass() è possibile effettuare la connessione e verificarne la riuscita con poche righe di testo ed ogni volta che si richiede necessaria una connessione al DB basta richiamare queste poche righe.
    Insomma questo è uno dei vantaggi di usare le classi, non centra niente con mysql o mysqli perché come ti ripeto la tua classe la puoi implementare come meglio credi

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    58
    Originariamente inviato da philbert
    E' un falso problema....
    nella tua classe personalizzata la finzione connetti() e tutte le altre funzioni le puoi benissimo implementare usando mysqli!!!




    Insomma questo è uno dei vantaggi di usare le classi, non centra niente con mysql o mysqli perché come ti ripeto la tua classe la puoi implementare come meglio credi
    E come faccio? scusa ma sono a livello "guida", quindi tutto ciò che non è espressamente descritto nelle guide faccio fatica a realizzarlo e a comprenderlo... sorry

  9. #9
    Originariamente inviato da kekko12
    E come faccio? scusa ma sono a livello "guida", quindi tutto ciò che non è espressamente descritto nelle guide faccio fatica a realizzarlo e a comprenderlo... sorry
    Essendo che stai a livello basic fai come ti ho detto prima. Le classi lasciale momentaneamente da parte.
    Crea il file connnessione.php in cui fai mysql_connect() e mysql_select_db() e tale file lo includi con require_once() ogni qual volta ti serve interagire con il db.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    58
    Originariamente inviato da oly1982
    Essendo che stai a livello basic fai come ti ho detto prima. Le classi lasciale momentaneamente da parte.
    Crea il file connnessione.php in cui fai mysql_connect() e mysql_select_db() e tale file lo includi con require_once() ogni qual volta ti serve interagire con il db.
    Ma io volevo proprio fare una connessione con le classi e utilizzando MySqli e non il procedurale che ormai è "morto". Anche se so che forse è un approccio più semplice, vorrei cominciare subito aggiornato e non imparando qualcosa che so che non verrà utilizzato in futuro... Sbaglio?

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.