sql >> Database teknologi >  >> RDS >> Mysql

Skift stor hjemmeside fra MySQL til MySQLi

Der er ikke noget let svar på dit spørgsmål, da praktisk talt alle enkle måder at gøre dette på indebar at gøre tingene anderledes, da ansøgningen blev skrevet.

Hvis du har direkte opkald til mysql_*-funktioner i hele din kode og intet databaseabstraktionslag, hvor du udfører dine forespørgsler gennem en hjælperklasse eller -funktion, skal du redigere hver kommando.

Du kan ikke bare slippe afsted med at tilføje et i til kommandoer som mysql_query som proceduremæssigt mysqli_query() kræver, at den første parameter er linket til db where med mysql_query() hvis der overhovedet blev givet en forbindelse, var det en anden parameter.

I stedet for blot at ændre mysql_query(...) til mysqli_query($link,.....) vil jeg anbefale, at der ikke er noget bedre tidspunkt at sætte et db-abstraktionslag på plads. Så brug funktioner f.eks. sql_query(), der rent faktisk behandler dine forespørgsler, så hvis du skal ændre DB igen, kan du i fremtiden bare opdatere de specifikke db-kommandoer i én abstraktionsfil. På den måde, hvis du skriver en funktion, der omslutter mysqli_query, kan du blot omdøbe din mysql_query() til din hjælpefunktion og lade hjælpefunktionen bekymre sig om at sætte linket derind.

Selvom det er den enkleste måde, vil det ikke binde parametre eller forberede sætninger, hvilket er en vigtig faktor til at forhindre sql-injection sårbarheder

Når du har ændret alle disse kommandoer, skal du teste.

Hvis du ikke har skrevet automatiserede tests, er det sandsynligvis et godt tidspunkt at begynde at skrive dem. Selvom du bliver nødt til at kontrollere, at hver ændring har virket, kan du undgå den smerte i fremtiden, hvis du gør det ved en automatisk test.



  1. Brug where-forespørgsler i JSONB-datatype i Rails Postgres

  2. ORDER BY RAND()-funktionen tager lang tid at udføre i mysql

  3. Oracle Enterprise Manager job er Hung

  4. Hvordan rettes en kollationskonflikt i en SQL Server-forespørgsel?