To są dwa całkowicie różne rozwiązania, przeznaczone do innych problemów.
PDO jest uniwersalną biblioteką do obsługi baz danych. Dostarcza spójnego interfejsu do pracy z różnymi bazami danych: MySQL, PostgreSQL itd. To jest jej główną zaletą, bo stanowi dzięki temu sensowną warstwę abstrakcji na samą bazę danych. Równocześnie to jest też jej największa wada, bo oznacza, że możliwości są sprowadzone do najmniejszego wspólnego mianownika – PDO może obsługiwać tylko te rzeczy, które obsługuje większość baz. Jako warstwa abstrakcji też nie jest często wystarczające, bo najczęściej nie chcemy wiedzieć, skąd i jak są pobierane dane, a po prostu móc na nich operować.
Z kolei mysqli to biblioteka przeznaczona do obsługi baz MySQL. Dzięki temu może oferować funkcje dla ficzerów specyficznych dla MySQL, a równocześnie – może być lepiej optymalizowana pod tę konkretną bazę danych. Dzięki temu może być wydajniejsze niż PDO. Największą wadą tego rozwiązania jest fakt, że kodu nie da się w prosty sposób przenieść do innego środowiska i jest specyficzny dla MySQL. Niemniej jeśli przykryje się to jakąś warstwą abstrakcji (np. wzorcem repozytorium) ta wada nie jest aż tak boląca.
Podsumowując: to zależy, co chcemy osiągnąć, z jakimi bazami danych będziemy pracować i jakiego poziomu abstrakcji potrzebujemy.