Det korta svaret är nej , funktionerna är inte likvärdiga.
Den goda nyheten är att det finns ett konverteringsverktyg som hjälper dig om du har många samtal/projekt att ändra. Detta gör att dina skript fungerar direkt.
https://github.com/philip/MySQLConverterTool
Det är en kluven version av Oracles originalversion, och den är kosher.
Som sagt, det är inte så svårt att uppdatera din kod, och du kanske vill migrera till en objektorienterad metod ändå...
1) Anslutningen
Du behöver för all del en ny anslutningsfunktion som sparar anslutningen som en PHP-variabel, till exempel;
$mysqli = new mysqli($host, $username, $password, $database);
Observera att jag har sparat anslutningen till $mysqli
. Du kan spara till $db
eller vad du vill, men du bör använda detta genom hela din kod för att referera till anslutningen.
Kom ihåg att aktivera felrapportering för mysqli innan du öppnar anslutningen;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
2) Frågan
Obs:Du bör skydda mot SQL-injektion med förberedda satser, som är tillgängliga i MySQLi. Ta en titt på Hur kan jag förhindra SQL-injektion i PHP? , men jag ska bara täcka grunderna här.
Du måste nu inkludera anslutningen som ett argument i din fråga och andra mysqli_
funktioner. I procedurkod är det det första argumentet, i OO skriver du det som en klassmetod.
Procedur:
$result = mysqli_query($mysqli, $sql);
OO:
$result = $mysqli->query($sql);
3) Hämta resultat
Hämtningen av resultatet liknar den gamla mysql_
funktion i procedur;
while ($row = mysqli_fetch_assoc($result))
men som $result
är nu ett objekt i mysqli, kan du använda objektfunktionen call;
while ($row = $result->fetch_assoc())
4) Stäng anslutning
Så som tidigare måste du inkludera anslutningen i stängningsfunktionen; som ett argument i förfarandet;
mysqli_close($mysqli);
och som objektet som du kör funktionen på i OO;
$mysqli->close();
Jag skulle vara här för alltid om jag gick igenom dem alla, men ni fattar. Ta en titt på dokumentationen för mer information. Glöm inte att konvertera eventuella anslutningsstängningar, resultatsläpp eller fel- och radräkningsfunktioner du har.
Den grundläggande tumregeln är för funktioner som använder databasanslutningen, du måste inkludera den i funktionen nu (antingen som det första argumentet i procedur, eller objektet du använder för att anropa funktionen i OO), eller för en resultatuppsättning du kan bara ändra funktionen till mysqli_
eller använd resultatuppsättningen som objekt.