Avatar billede stigma Nybegynder
09. august 2009 - 22:04 Der er 11 kommentarer og
1 løsning

Array til MySQL

Hvis jeg vil gemme et Array i MySQL, ville jeg selv mene at det bedste og nemmeste er at serialisere dette og så gemme det.

Men så stødte jeg ind i et problem, når jeg sætter en ' eller " ind i denne serialize(); hvor jeg selvfølgelig inden har udført "mysql_real_escape_string" på variablen, så gemme den dataen forkert, der tror der er ex. 14 tegn, hvor der faktisk kun er 10..

Derfor er jeg meget åben overfor konstruktive forslag til hvordan dette problem eventuelt kan løses, eller om der er en anden metode til at gemme et Array i min MySQL db..

på forhånd tak... Jeppe.
Avatar billede repox Seniormester
09. august 2009 - 22:14 #1
<?php

    $array = array("Nummer 1", "Nummer 2", "Nummer 3");
   
    $toDb = base64_encode(seralize($array));
    // kode til at indsætte $toDb i MySQL


    // kode til at hente arrayet fra MySQL
    $array = unserialize(base64_decode($fromDb));

?>
Avatar billede Slettet bruger
09. august 2009 - 22:15 #2
Det kommer til at fylde lidt mere, men du kunne prøve:

$ligeKlarTilAtProppeIDatabasen = base64_encode(serialize($mitArray));
Avatar billede Slettet bruger
09. august 2009 - 22:16 #3
Øv, 47 sekunder hurtigere end mig :(
Avatar billede stigma Nybegynder
09. august 2009 - 22:18 #4
Mange tak for det hurtige svar, det ser ud til at virke. Det er en klovn ind på en scripting kanal i på IRC der påstår at jeg skal lave et helt nyt table i min db, det virkede sq lidt for dumt syntes jeg..
Avatar billede Slettet bruger
09. august 2009 - 22:23 #5
Heh, ja. Godt eksperten findes, så du ikke behøvede at sidde og rode med det i timer.
Avatar billede stigma Nybegynder
09. august 2009 - 22:28 #6
Ja meget godt. Men altså der skulle ikke være nogle problemer med det base64_encode? noget med at sløver eller lignende?
Avatar billede repox Seniormester
09. august 2009 - 22:33 #7
det minimalistiske resourceforbrug er vist ikke noget du behøver at bekymre dig om. Det svarer til at bekymre sig om du skal bruge enkelte eller dobbelte quotes til at skrive dine strenge i.
Avatar billede stigma Nybegynder
09. august 2009 - 22:35 #8
Haha okay :) Tusinde tak for hjælpen, kan du ikke lige oprette et svar, så du kan få din belønning ^^
Avatar billede repox Seniormester
09. august 2009 - 22:43 #9
Det fik du her.
Avatar billede stigma Nybegynder
09. august 2009 - 22:54 #10
Lige en ting til, når man bruger base64_encode, så behøves man da egentlig ikke at sikre sig med injection? Alt bliver jo konverteret til bogstaver..?
Avatar billede repox Seniormester
10. august 2009 - 13:04 #11
Når det er nødvendigt for dig at spørge må det antages at det stadig er nødvendigt for dig.

At sikre sig mod SQL injection er generelt god praksis - uanset input.

Der er forskellige måder at gøre det på, en af dem er f.eks. mysql_real_escape_string() andre er type casting, prepared statements eller reg. exp.

Indtil du har styr på hvordan du sikrer dig mod SQL injections og hvad det er der gør du kan opleve en SQL injection, ser jeg ikke nogen grund til ikke at råde dig at gøre andet end at sikre dig imod SQL injections hver gang.
Avatar billede stigma Nybegynder
11. august 2009 - 14:44 #12
Normalt sikrer jeg mig også mod det med mysql_real_escape_string(), ville bare lige være på den sikre side.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester