Det korte svar er nej , funktionerne er ikke ækvivalente.
Den gode nyhed er, at der er et konverterværktøj, der vil hjælpe dig, hvis du har mange opkald/projekter, der skal ændres. Dette vil tillade dine scripts at arbejde med det samme.
https://github.com/philip/MySQLConverterTool
Det er en splittet version af Oracles originale version, og den er kosher.
Når det er sagt, er det ikke for svært at opdatere din kode, og du vil måske alligevel migrere til en objektorienteret metode...
1) Forbindelsen
For alt i verden har du brug for en ny forbindelsesfunktion, der f.eks. gemmer forbindelsen som en PHP-variabel;
$mysqli = new mysqli($host, $username, $password, $database);
Bemærk, at jeg har gemt forbindelsen til $mysqli
. Du kan gemme i $db
eller hvad du nu kan lide, men du bør bruge dette i hele din kode til at referere til forbindelsen.
Husk at aktivere fejlrapportering for mysqli før du åbner forbindelsen;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
2) Forespørgslen
Bemærk:Du bør beskytte mod SQL-injektion med forberedte sætninger, som er tilgængelige i MySQLi. Tag et kig på Hvordan kan jeg forhindre SQL-injektion i PHP? , men jeg vil lige dække det grundlæggende her.
Du skal nu inkludere forbindelsen som et argument i din forespørgsel og andre mysqli_
funktioner. I procedurekode er det det første argument, i OO skriver du det som en klassemetode.
Procedure:
$result = mysqli_query($mysqli, $sql);
OO:
$result = $mysqli->query($sql);
3) Hent resultat
Hentning af resultatet ligner den gamle mysql_
funktion i proceduren;
while ($row = mysqli_fetch_assoc($result))
men som $result
er nu et objekt i mysqli, kan du bruge objektfunktionen kaldet;
while ($row = $result->fetch_assoc())
4) Luk forbindelsen
Så som før skal du inkludere forbindelsen i lukkefunktionen; som et argument i proceduren;
mysqli_close($mysqli);
og som det objekt, du kører funktionen på i OO;
$mysqli->close();
Jeg ville være her for evigt, hvis jeg gik dem alle igennem, men du forstår. Tag et kig på dokumentationen for mere information. Glem ikke at konvertere enhver forbindelseslukning, resultatfrigivelse eller fejl- og rækketællingsfunktioner, du har.
Den grundlæggende tommelfingerregel er for funktioner, der bruger databaseforbindelsen, du skal inkludere den i funktionen nu (enten som det første argument i proceduren eller det objekt, du bruger til at kalde funktionen i OO), eller for et resultatsæt du kan bare ændre funktionen til mysqli_
eller brug resultatsættet som objektet.