Devo continuare a utilizzare la normale mysql_query o passare all'interfaccia PDO in php?

1

Sto costruendo un grande sito web e utilizzando il normale vecchio metodo mysql_query per le transazioni e le comunicazioni con il database e tutto ciò che sto andando bene, inclusa la sicurezza. Sono un po 'confuso, dovrei passare alla nuova interfaccia PDO? perché ho imparato che è più sicuro, o continuo a usare i vecchi metodi mysql_query() e mysql_fetch_assoc() ?

Sono molto vicino al completamento del sito web e per passare all'interfaccia PDO mi costerà un po 'di tempo, per iniziare ad aggiornare i miei codici.

Sono un po 'confuso, che dovrei usare e quali sono i pro e i contro?

    
posta lucy jay 21.05.2013 - 00:58
fonte

4 risposte

5

I'm a little confused, which should i use

Indubbiamente se passi solo attraverso questo link vedrai un avviso. Quindi dovresti passare a PDO o MySQLi .

Contro e pro:

Ci sono molti post disponibili su StackOverflow su questo argomento. Parlano tutti di PDO e perché usarlo.

E molti altri qui . Infine, ti consiglio di passare a PDO o mysqli poiché mysql verrà rimosso come per il collegamento. Anche se hai preso in considerazione i problemi di sicurezza e hai protetto la tua app, qual è l'uso quando è completamente perso? Devi farlo in un secondo momento, in qualche modo, quindi fallo subito. Spero che questo aiuti.

    
risposta data 21.05.2013 - 07:15
fonte
1

Normalmente è bene usare Mysqli o PDO è l'opzione migliore per il collegamento del database, dal momento che mysql verrà rimosso presto.

Ma dal punto di vista dello sviluppatore, scrivi una semplice classe wrapper per tutta la connettività del database

Ad esempio

For mysql

Class database_mysql {
     public getResults($query) {
         $result = mysql_query($query);
         $row = mysql_fetch_assoc($result);
         return $row;
      }
.
.
.
<other functions>
}

For PDO

Class database_pdo {
     public getResults($query) {
        $statement = $pdo->query($query);
        $row = $statement->fetch(PDO::FETCH_ASSOC);
        return $row;
      }
.
.
.
<other functions>
}

For mysqli

Class database_mysqli {
     public getResults($query) {
        $result = $mysqli->query($query);
        $row = $result->fetch_assoc();
        return $row;
      }
.
.
.
<other functions>
}

quando inizializzi la classe usa di sotto

$db = new Database_mysql(<arguments>);

dove mai hai bisogno dei risultati, usa

$db->getResults(<query>);

se devi passare a mysqli, o PDO, modifica semplicemente il nome della classe

$db = new Database_pdo(<arguments>);

In questo modo risparmierai molto tempo a cambiare l'estensione.

    
risposta data 21.05.2013 - 10:16
fonte
0

Preferirei PDO per qualsiasi nuovo sviluppo, in quanto è un'interfaccia molto carina e supporta la maggior parte dei database di back-end senza troppi giochetti (con l'eccezione notevole di ORACLE!).

Tuttavia, se si utilizza un sistema funzionante con 'mysql_query', non vedo alcun motivo per cambiare. Il vantaggio principale di PDO oltre alla portabilità è che è una bella interfaccia pulita da codificare. Ma siccome la tua applicazione è già codificata e non intendi passare da MySql a un altro DB, penso che il tuo tempo sarebbe meglio spendere qualcosa di più utile.

    
risposta data 21.05.2013 - 08:51
fonte
0

Puoi ancora lavorare con il tuo codice se non pianifichi l'aggiornamento alle versioni di php che porteranno mysql out. Il che significa che perderai la maggior parte dei miglioramenti in queste nuove versioni.

Passare da mysql a mysqli sarà più facile rispetto a pdo, mysqli ha un'interfaccia / funzioni simili a mysql.

Se hai intenzione di collegarti solo ai database mysql, allora ti consiglierei di usare mysqli, pdo è più generico e ti permette di connetterti ad altri database con modifiche minime, ma penso che ci sarà una perdita di prestazioni rispetto a mysqli. Devo ammettere che è impercettibile.

    
risposta data 31.03.2014 - 11:04
fonte

Leggi altre domande sui tag