Gå til innhold

Søk i MYSQL med PHP


Anbefalte innlegg

Hei jeg har en del tabeller og felter jeg gjerne skulle laget et søkescript for. jeg kan desverre ikke nok MySQL til å lage det.

 

Hvordan vil spørringen se ut hvis jeg vil gjøre noe som dette:

 

søk i Tabell hvor Felt1, Felt2 og Felt3 er lik $variabel.

 

Dette gjelder søk av artikler.

 

Takk for hjelpen :)

Lenke til kommentar
Videoannonse
Annonse

Ikke lett å lage en SELECT setning ut av dette, og tråden hører vel mer innunder SQL. Når du skal søke i en SQL database bygger du setningen opp slik

 

SELECT (Felt navn, ta med alle feltene du skal vise. om du har flere tabeller med like feltnavn, skriv på formen tabell.felt eller om du vil ha med alle tilgjengelige felt bruk *) from (tabelnavn. Ta med alle tabellene du skal bruke) where (her sammenlikner du verdier, f.eks felt1=$variabel e.l.)

 

Problemet med utgangspunktet ditt er at det ville resultert i følgende spørring:

 

SELECT * from tabell where felt1=$variabel and felt2=variabel and felt3=variabel

 

Dette ville sansynligvis ikke gitt et eneste resultat, så sant ikke felt1, felt2 og felt3 er helt like, og det skal være spesielle tilfeller hvor dette har noe poeng.

Lenke til kommentar

Ah. Skjønner hva du mener. Men når jeg skrev LIK, så mente jeg ikke _akkurat_ lik. Bare at teksten inneholdt noe som liknet det søkeordet.

 

men hva med en slik spørring?

 

SELECT * FROM artikler WHERE felt1 LIKE '%$variabel% OR felt2 LIKE '%$variabel%' felt3 LIKE '%$variabel%

 

Er litt usikker på om det går ann å bruke OR.

 

 

Er det veldig kritisk med addslashes() med tanke på sikkerheten? Skjønnte ikke helt hvorfor det øker sikkerheten.

Lenke til kommentar

Jo du kan bruke OR.

Addslashes er en funskjon som legger til \ ved spesielle tegn.

Dette kan være tegn som quotes ".

 

Men altså, det denne funksjonen har som hennsikt i dette tilfellet er å hindre i at brukere søker på "Skumle" ting.

Når du direkte setter inn en variabel i et query så er det meget lett å trå feil.

Får hvis brukeren skriver inn en mysql kode i søke boksen, blir denne lagt inn i querien, og dermed kan div. handlinger bli utført av brukeren.

 

Men ved å skrive:

$variabel = ddslashes($variabel);

Før selve querien, blir alt meget sikrere. For som sagt blir da disse spesiall tegnene (som brukeren må skrive inn for å få en komplett kode) bli "slashet" bort, om du kan si det på den måten :p

 

Håper du forstår :)

Endret av casualtie
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...