Mysqli - Prepared statements

Tags:    mysqli php

<< < 12 > >>
Heej.
Jeg har her på det sidste siddet og kodet mig en rigtig simpel, men forhåbentlig meget brugbar mysqli class. Mit spørgsmål, hvor meget mere jeg behøves gå op i sikkerhed, i forhold til mysql injection osv. Ved at prepared statements er fortrukket, da det skulle være mere tricky at cracke sig igennem, men kender desværre ikke hele teorien bag det. Men min class ser sådan her ud:

Fold kodeboks ind/udPHP kode 



Mvh. Wunderstrudel



13 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato

at jeg blev træt at konstant at skrive mysqli_connect og mysqli_close. Ved godt at jeg bare kunne lave det som functions, men doven som jeg er tænkte jeg, at jeg lige så godt kunne gøre det så nemt for mig selv som muligt.


antag du har 4 class'er vil du så lave en connect i hver ??, med brugernavn/password/database

det rigtige må være at lave connectionen uden for class'en, og initalicerer classen med den connection.
alternativt, initalicerer classen med connect oplysningerne, som et array.
for kun at vedlige holde omplysningerne 1 sted.

kunne det tænket du på et tidspunkt skal arbejde med flere databaser samtidig ??
personligt arbejder jeg ofte med 2 connections:
1 til project databasen
1 til postnummer databasen

her har jeg gavn af en function, jeg bare angiver database navnet som parameter, og den retunerer en connection




Hej.
Den class ser fint ud men hvorfor oprette forbindelse til mysql hver gang du ville lave rn query?
Jeg ville lave rn function til oprettelse og og en til query. På den måde behøves du kun at oprettte forbindelse en gang.

Ved at bruge den gamle metode med mysqli->query løber mysql ignem hele stringen og finder data i databasen på denne måde skal du være sikker på at der ikke er ' , ; osv i de parametre du ville søge på. Ved prepare behandler mysqli de data på sidelinjen med selve sql query. På denne måde er det lige meget om den indeholder ` , ; da de data ikke indgår i selve sql query. Samt du fortæller hvad mysql skal kontroler hvad hver enkelt data er (String Int osv.)
. Lad mig sige det på denne måde har endnu ikke hørt om nogle der har fundet en måde at omgå sikkerhedwn i det endnu.



Heej Rix. Mange tak for svare og forklaringen! (:
Grunden til at jeg har lavet den som jeg har, at jeg blev træt at konstant at skrive mysqli_connect og mysqli_close. Ved godt at jeg bare kunne lave det som functions, men doven som jeg er tænkte jeg, at jeg lige så godt kunne gøre det så nemt for mig selv som muligt. Så måden jeg havde tænkt det skulle bruges på er fx.

Fold kodeboks ind/udPHP kode 


Så idéen er lidt, at det hele helst gerne skulle køre bare med en linje php, dog med 2 hvis vi snakker en SELECT.



Jeg har bare mysqliCon.php liggende i min inc folder, og så require jeg den i toppen af mine models/classes, så hver gang jeg skal lave hente/sende data, så skriver jeg bare den ene linje php, og så klare den alt for mig, samt at lukke forbindelsen igen. Det er planen ihvertfald. (:
Nu er jeg så bare stødt ind i det problem, at når jeg bruger SELECT, og får den til at return min query med "returnResult()", så modtager jeg kun 1 ud af evt mange columns.





hej. I føglende eksempel som du giver ville det være lige meget da du kun udføre EN forspøgelse til mysql. Men hvis du skal lave flere end en ville du have spild tid til at connecte til Mysql. En connection kan godt have flere sql forspøgelser. Min hjemme side håndtere 9 på en f.eks.

Så hvis du laver endnu en function i din class med navnet query og flytter alt på nær det der opretter forbindelse til databasen slipper du for at oprette forbindelse til mysql hver gang men kun en gang.

Er detsvære på min mobil så kan ikke lige give en eksempel.

Du kan vise alle resultater sådan her.
while($row = $data->returnResult()){
echo $row['password']."<br>";
}



Indlæg senest redigeret d. 28.01.2015 11:03 af Bruger #17794
Fold kodeboks ind/udPHP kode 

Er den query jeg har problemer med ang. kun at få 1 ud af flere columns, det ser ud til at jeg kun modtager nummer 1.
Og det der er rigtig nok, burde nok smide alt udover connect ind i en separat function, bare for general optimering (:



ahhh fejl i min forrige indlæg

Hvis ingen kommer mig før mig ville jeg lige poste løsningen når jeg kommer til min compurter.



Det helt ok, det fair nok antaget kan man sige. d:
Og hvis du har en løsning, ville du redde min dag, har godt nok haft meget bøvl med den class her, så ville være træt af hvis jeg ikke får det til at virke ^^



Fold kodeboks ind/udKode 

skal vel være

Fold kodeboks ind/udKode 





Hahah ja Ronny, my bad, det er bare mig der havde ændret navnet på min class, og glemt det da jeg skrev her inde d:
Den er ikke glad for at man skriver $data = new mysqli(), da den så tror at man prøver at lave en ny instance af den "indbyggede" mysqli class d:



<< < 12 > >>
t