mysqli is niet 'beter en veiliger' dat is het alleen als jij het 'beter en veiliger' gebruikt. Je kan er nog net zo open voor sql injecties mee staan als met andere opties.
De grote reden om voor de mysqli (of PDO) extensie te kiezen heeft te maken met het feit dat de mysql extensie zeer waarschijnlijk niet al te lang meer zal worden gebruikt, in nieuwere php releases dan. Als je dus iets met mysql doet dan kan het zijn dat eerdaags je website niet meer werkt.
MySQL is vanaf PHP5.5 deprecated, dat betekend dat het af geraden wordt om het te gebruiken.
Als directe vervanging van mysql is er MySQLi. Deze API's lijken er op elkaar en aangezien je MySQLi ook als functie kunt gebruiken raad ik dit aan.
PDO is echter een compleet nieuw project, vanaf de grond aan opgebouwd. Het kan omgaan met meerdere typen database (niet alleen mysql, maar ook bijv. sqlite). Ook heeft het een beter prepared statement systeem.
Maar grotendeels is het een persoonlijke keuze. Als ik een beginner was (wat ik in alle eerlijkheid denk dat jij bent) en ik zou snel een applicatie willen bouwen zou ik gewoon lekker MySQLi op de functionele wijze gaan gebruiken. Wil je wat meer tijd investeren of weet je al de OO syntax van PHP, dan gebruik je MySQLi op de object wijze.
Maak je wat ingewikkeldere applicaties en wil je tijd investeren in het leren van een nieuwe API, dan is PDO de beste keuze.
Ik heb ooit wel een keer gewerkt met PDO, maar heb er nooit veel tijd in gestoken.
En om eerlijk te zijn heb ik momenteel niet de behoefte om dit eerst te gaan leren.
Voor mij wordt het dus MySQLi.
En ik gebruik uit de reactie van Wouter dan je ook MySQLi via OOP kan doen (dat hier al een goede class voor bestaat)?
Wat is hiervan dan het voordeel ten opzichte van de 'gewone' MySQLi functies?
Ik gebruik ze beide.
Voor mij is dan portability de belangrijkste reden om PDO te gebruiken, MySQLi gebruik ik alleen bij het inlezen van sql dumps (Multi query ondersteuning)
Ik ben het met Wouter eens dat als je vanuit mysql moet gaan overzetten, voor de meesten mysqli eenvoudiger is.
Omdat een op een omzetten van mysql naar mysqli niet kan vraag ik mij af of er een lijst beschikbaar is waarop te zien is welke instructies zonder meer lunnen worden omgezet. Mysql_connect is er zo een die anders is opgebouwd