No, non è una semplice sostituzione.
Da mysql_ a mysqli_ cambia poco, solo i parametri da passare alla funzioni, per esempio alle funzioni mysqli_ devi passare obbligatoriamente anche la variabile contenente la connessione al db, nelle funzioni mysql_ si poteva omettere, in tal caso si prendeva la connessione aperta, ma poteva creare confusione se si avevano attive più connessioni contemporaneamente. Sono cambiati anche altri parametri da passare, ma il cambio è abbastanza immediato.
Questo se usi la versione procedurale di mysqli_ così come lo era mysql_.
Esiste però anche la versione object oriented di mysqli, che rispetto a mysql_ è proprio un'altra cosa vista la natura diversa dell'approccio, il nome delle funzioni però rimane più o meno quello.
La classe PDO invece con mysql_ non c'entra proprio niente, è solo object oriented ed ha funzioni tutte sue, sarebbe meglio imparare ad usare questo.