Skrivet av csoLs:
Jag skulle nog rekommendera PDO istället för MySQLi. Finns dessutom en utmärkt guide på svenska.
Det är bättre (mer databasstöd, lättare att binda parametrar osv) på alla sätt och vis jämfört med MySQLi (förutom i benchmarks, men det är nog irrelevant för dig).
Det finns för- och nackdelar. Just den jämförelsesidan länkas ofta, men den är i mina ögon rätt bristfällig. PDO "vinner" för att den stöder fler databaser — men det svarar ju inte på frågan: "om jag ska använda MySQL, vilket gränssnitt bör jag använda?".
Det är en försköning att säga som de gör på sidan att det bara är att använda en annan databas som drop-in-replacement "med lite ändringar i frågor" om man använder PDO, för fortfarande så finns det egenheter hos de enskilda databaserna; exponentiellt fler ju mer invecklade frågor man använder, och lagrade procedurer ovanpå det.
Dessutom gör sidan en poäng av att `mysqli` inte stöder "client side prepared statements" — men enda anledningen till att PDO stöder det är för att emulera prepared statements för databaser som inte har stöd för detta. Eftersom `mysqli` per definition jobbar mot en databas som stöder detta så är det märkligt att ens ha med i en direkt jämförelse. Samtidigt säger personen att `mysqli` prestandamässigt är bättre, men förkastar detta som argument för allas användningsområden, vilket är rätt trubbigt.
Positivt med PDO är att man lär sig ett tillvägagångssätt ifall man ska använda andra databaser i andra projekt i framtiden. Användningsområdet i att migrera en sida till en helt annan databas måste vara mikroskopiskt litet i de fall då det bara är att "ändra en parameter". Jobbar man med ett projekt som man ändå vet kommer använda MySQL/MariaDB så känns det inte helt självklart att skänka bort 5% i databasprestanda kontinuerligt under sidans livstid bara för att eventuellt underlätta en eventuell (fast väldigt osannolik) total databasmigrering i framtiden.
Jag har verkligen inget emot PDO i sig, men just den sidan tycker jag gör ett dåligt jobb för att representera situationen, och verkar söka frågan till ett svar den redan vet att den vill förmedla. Det finns en poäng i att PDO:s namngivna parametrar är tydligare, om man inte på förhand vet hur många variabler man vill binda så är `mysqli` onödigt bökigt, PDO:s fetchObject kan vara behändig och till sitt nästa projekt mot en annan databas kanske man har ett försprång. Samtidigt så finns det saker som är krångligare med MySQL via PDO än direkt med `mysqli` (exempelvis att räkna rader (jag tror dock att detta fixats för just MySQL i nyare versioner av PDO, men `rowCount()` ger olika resultat beroende på vilken backend PDO använder för tillfället)) och PDO stöder inte asynkrona (icke-blockerande) anrop. Det är för den delen inget som skadar i att lära sig båda gränssnitten, och de är rätt snarlika i många koncept.
En sak som möjligen är ett argument för de som är nya till gränssnitten är att jag föreställer mig att det finns mer information att hitta på nätet om `mysqli`, speciellt när det handlar om MySQL-specifika beteenden. Man vet också att de frågor man hittar handlar om just MySQL och inget annat.
Det är fritt att välja vilket gränssnitt man vill; jag reagerar mest emot den onyanserade bild den där jämförelsesidan målar upp. Jag noterade detta senast för någon vecka sedan när den länkades, så nu passade jag på att skriva upp det jag tänkte då .