Gå til innhold

Anbefalte innlegg

Heisann!

 

Har en tabell her som jeg gjerne vil gi muligheten til å lagre ' tegn i. For eksempel, hvis jeg vil lagre

 

Best of the 80's.

 

Så vil dette gi problemer siden ' ' blir brukt for å angi start og slutt på verdien jeg vil lagre.

 

INSERT INTO Music(album) VALUES('Best of the 80's.');

 

Så hvordan får jeg lagret det ' tegnet i tabellen? :S

Lenke til kommentar
Videoannonse
Annonse

Fungerte dårlig :( Førstnevnte metode fungerte ikke, og sistnevnte lagret det som ' i databasen, og jeg vil helst at det skal stå '...

 

Er snakk om sqlite3 og C++ her. Jeg kan alltids bruke replace etter at jeg har hentet ut resultatet fra databasen, men det blir mye enklere om jeg faktisk kan lagre ' inni der...

Lenke til kommentar
På web-prosjekter hender det jeg tar den enkle løsningen, nemlig og erstatter ' med & #39; (uten mellomrom) som er html-entiteten for ' :p

Å legge HTML-formattering av data i databasen finner jeg noe i retning av direkte grisete, og det vil jeg på generelt grunnlag fraråde, da det gir en sterk binding mellom data og visuell presentasjon.

Lenke til kommentar
Den enkleste (og beste) måten er vel å bruke to ' rett etter hverandre der et slikt tegn skal lagres i databasen, f eks:

 

INSERT INTO Music(album) VALUES('Best of the 80''s.');

 

Aha! Takk skal du ha, skal se litt nærmere på prepeared statements før jeg eventuelt bestemmer meg for hvilken metode å bruke (finne ut hva som er mest jobb :p). Takk for hjelpen alle sammen :D

Lenke til kommentar
Aha! Takk skal du ha, skal se litt nærmere på prepeared statements før jeg eventuelt bestemmer meg for hvilken metode å bruke (finne ut hva som er mest jobb :p).

 

Bestemme seg for???? De eneste valgene du har er prepared statements og prepared statements, og da blir jo valget enkelt, nemlig prepared statements.

Lenke til kommentar
Den enkleste (og beste) måten er vel å bruke to ' rett etter hverandre der et slikt tegn skal lagres i databasen, f eks:

 

INSERT INTO Music(album) VALUES('Best of the 80''s.');

 

Noen spesiell grunn til at du anbefaler å escape manuellt istedetfor å bruke prepared statements og la databasen/driverne gjøre det for deg? Manuell escaping gjør det jo mulig med SQL-injection (hvis man ikke har tenkt på alt).

Lenke til kommentar
På web-prosjekter hender det jeg tar den enkle løsningen, nemlig og erstatter ' med & #39; (uten mellomrom) som er html-entiteten for ' :p

Å legge HTML-formattering av data i databasen finner jeg noe i retning av direkte grisete, og det vil jeg på generelt grunnlag fraråde, da det gir en sterk binding mellom data og visuell presentasjon.

Som sagt bruker jeg det bare på rene små webprosjekter som ikke skal brukes til noe som helst annet. Jeg har gått på en smell på slike ting i gamledager. Dataene skulle bare presenteres på web og oversendes en annen server (som tok imot & #39; som '). Utfordringen kom da jeg også skulle sende disse datane over til en annen server, som skulle ha data i en annen encoding :p

Lenke til kommentar
Ellers kan jeg skrive en metode som erstatter ' i strengene mine med '' og så bruke strengen i sqlite3_exec(database, QUERY... :p

 

Det er dårlig programmeringsskikk å eksekvere SQL-statements på denne måten? Det må da være mye bedre å lære seg den riktig måten å gjøre det på, spesielt med tanke på at du kanskje en gang vil bruke andre RDBMS enn SQLite som vil kreve enda mer validering av input enn bare om den inneholder '.

Lenke til kommentar

Blæ... Ekke så farlig. Holder på med et hobby prosjekt for å få tia til å gå og for å lære meg C++. Lager et musikkprogram hvor jeg lagrer musikk samlinga i en sql database. Hvordan SQL fungerer gir jeg egentlig pokker i, så lenge det fungerer :p

Lenke til kommentar

Var ikke sånn ment, jeg setter jo selvfølgelig pris på hjelpen. Men siden jeg ikke satser på å bli flink på SQL programmering, men C++, så er det ikke så viktig for meg å vite hva som er best, men hva som fungerer og er lettest å gjennomføre.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...