jpg Skrevet 14. november 2015 Del Skrevet 14. november 2015 (endret) Hei Har lenge lurt på hva som er beste praksis for hvordan jeg skal lagre SQL-queries, som brukes i php koden. Raskt php kode eksempel: $query = $pdo->prepare("SELECT column1, column2, column3 FROM example WHERE columnX=:columnX;"); $query->bindParam(':columnX', $var); $query->execute(); Kun SQL koden: SELECT column1, column2, column3 FROM example WHERE columnX=:columnX; Re-formatert SQL kode ser slik ut: SELECT column1, column2, column3 FROM example WHERE columnX = :columnX; Men hva gjør man når man joiner 10-20 tabeller, samt har et relativt mange kriterier?Resultatet er en kode som ikke lenger er "lett-leselig", og det er nærmest umulig å holde oversikten... For å i det hele tatt forstå SQL koden, og kunne gjøre endringer, må den reformateres slik som siste eksempelet over, men da får den fort en lengde på 2-3 stk A4 sider. Hva er beste praksis her? Er gjerne noen hundre linjer med php kode, samt diverse SQL queries i forskjellig lengde.Mesteparten av SQL koden får fint plass inne i php-filene, men så er det disse 10%-ene som lager problemer... Er det god eller dårlig praksis å lese inn .sql filer på denne måten? $sql=fopen("query.sql"); Bør jeg isåfall fjerne alle mellomrom når den leses inn for å spare på resurser og trafikk på serveren? Ser for meg noen 100-talls unødvendige mellomrom nemlig... Spørsmål 2: Til slutt, noen som vet om en enkel tjeneste på nett for å reformatere SQL filer, slik at koden får plass på 1 svært lang linje? istedet for å bruke unødvendig mange linjer og mellomrom?? En slags sql-optimaliserer med andre ord? Kom gjerne med eksempler og forslag til hvordan proffene gjør det Endret 14. november 2015 av jpg Lenke til kommentar
quantum Skrevet 14. november 2015 Del Skrevet 14. november 2015 Formatering av sql har veldig lite å si for ytelse, så det behøver du ikke bekymre deg for. Formater med tanke på best mulig lesbarhet. Når du må joine 10-20 tabeller i en spørring kan man spørre seg om det kan være en tanke å denormalisere databasen litt. Hvis du ikke ønsker å embedde sql i php-kode vil jeg heller anbefale lagrede prosedyrer og views, enn å lagre sql i filer, views og prosedyrer blir "kompilert" og optimalisert i databasen en gang for alle. Du oppnår jo forøvrig tildels det samme med prepared statements, som du allerede bruker. Du kan vurdere å bruke en ORM, men det har både fordeler og ulemper ... Lenke til kommentar
Crowly Skrevet 14. november 2015 Del Skrevet 14. november 2015 Er det god eller dårlig praksis å lese inn .sql filer på denne måten? $sql=fopen("query.sql"); Bruk require_once(), require(), include_once() eller include() etter behov, og legg sql'en i egne klasser (alternativt i konstanter eller funksjoner). Å ta i bruk en MVC struktur kan også være fornuftig, avhengig av størrelsen på det du skal lage. // fooSQL.php class fooSQL { const EXAMPLE_SQL = <<<SQL SELECT column1, column2, column3 FROM example WHERE columnX=:columnX SQL; } // foo.php class foo { protected $pdo; public function __construct(){ $this->pdo = // pdo config } public function something(){ $query = $this->pdo->prepare(fooSQL::EXAMPLE_SQL); $query->bindParam(':columnX', $var); $query->execute(); // .... } } // test.php // includes bør håndteres av en autoloader include_once('foo.php'); include_once('fooSQL.php'); $foo = new foo(); $foo->something(); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå