nilsh Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Eksempelvis denne spørringen: SELECT P.pumpeid, P.merke, P.modell, P.kundeid, P.nesteservice, P.installasjonsdato, K.fornavn, K.etternavn, K.postnr, K.poststed, K.telefon2, K.telefon1, K.serviceavtale FROM Pumper as P, Kunder as K WHERE P.kundeid = K.kundeid ORDER BY P.nesteservice Er det mer riktig å bruke `P`.`pumpeid` på alle..? Og denne biten: ... WHERE `Pumper`.`pumpeid` = '{$pumpeid}' LIMIT 1; Er det mer riktig å skrive '' og {} rundt variabelen slik jeg har gjort? Det virker uten og.. Bruker dere "ekstrautstyr" som f.eks. mysql_free_result($result); Hva annet må/bør være med..? Lenke til kommentar
medlem-68510 Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Om du har med input fra en bruker børe du sende data gjennom mysql_real_escape_string() også. Se SQL injection på Wikipedia. Lenke til kommentar
nilsh Skrevet 2. desember 2009 Forfatter Del Skrevet 2. desember 2009 Om du har med input fra en bruker børe du sende data gjennom mysql_real_escape_string() også. Se SQL injection på Wikipedia. Yes, bruker det. sorry, glemte å skrive det Lenke til kommentar
JohndoeMAKT Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Spørsmålet er om det er som du skriver «mysql»-spørringer eller om det er SQL-spørringer. SQL har en standardisert syntaks som de fleste databaser støtter. Men MySQL støtter både utvidelser og forenklinger av SQL. Det dette koker ned til er gjerne om spørringene noen gang skal kjøres mot annet enn en MySQL-server. Dersom svaret er ja bør f.eks ` brukes rundt database-/tabellnavn. Dersom svaret er nei syntes jeg personlig at den enkleste syntaksen MySQL støtter er det beste valget da enkel syntaks ofte er lettere å lese samt har mindre muligheter for feil. Så jeg hadde skrevet slik du skriver i første kodeblokk. Men her kan jeg legge til at SQL-kode for min del ikke er noe hellig som skal skrives én gang, lamineres og legges i banken. Refaktorering skjer over en lav sko. -------- Når det gjelder «{$pumpeid}» er det PHP, ikke SQL. Jeg anbefaler å alltid bruke krølleparanteser rundt variabler i parsede SQL-spørringer ("" rundt spørringen i motsetning til ''). Begrunnelsen er at det gir etter min erfaring mer nøyaktig highlighting i editorer samt gir deg mulighet til å bruke arrays/objekter (jeg er 90% sikker på at det ikke fungerer uten parantesene) som: .. WHERE name = '{$fisk->name}' LIMIT 9000 .. WHERE name = '{$fisk['name']}' LIMIT 9000 Consistency is everything, bruker du krølleparanteser rundt arrays/objects i spørringer bør du IMO også gjøre det rundt andre variabler. Lenke til kommentar
Ernie Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 (endret) Spørsmålet er om det er som du skriver «mysql»-spørringer eller om det er SQL-spørringer. SQL har en standardisert syntaks som de fleste databaser støtter. Men MySQL støtter både utvidelser og forenklinger av SQL.Det dette koker ned til er gjerne om spørringene noen gang skal kjøres mot annet enn en MySQL-server. Dersom svaret er ja bør f.eks ` brukes rundt database-/tabellnavn. Dersom svaret er nei syntes jeg personlig at den enkleste syntaksen MySQL støtter er det beste valget da enkel syntaks ofte er lettere å lese samt har mindre muligheter for feil. Såvidt jeg husker er ` mysql-spesifikk syntaks, og bør etter min mening unngå så langt det er mulig av den grunn. I forhold til andre databasesystemer skal det være helt uproblematisk å liste opp både tabell- og kolonnenavn uten noe som helst form for aksent eller apostrof så lenge man holder seg unna fy-ord i SQL-sammenheng (noen vil være spesifikk for databasesystemet også). Det er f.eks ingen genial ide å ha en tabell eller kolonne med navn from. Skulle man allikevel ha det må man i mysql legge til ` rundt for at det skal fungere slik man ønsker. Andre databaser benytter andre tegn i den sammenhengen. Endret 2. desember 2009 av Ernie Lenke til kommentar
nilsh Skrevet 2. desember 2009 Forfatter Del Skrevet 2. desember 2009 Hva mente du med "tabell eller kolonne med navn from"? Lenke til kommentar
Ernie Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Hva mente du med "tabell eller kolonne med navn from"? Du kan teknisk sett klare å gi en kolonne eller tabell navnet 'from' (eller andre reserverte ord). Det er en svært, svært dårlig ide, men det er mulig. Det er mer eller mindre de eneste gangene du trenger ` i en spørring. Altså, 'SELECT from FROM tabell WHERE ...' vil åpenbart ikke fungere, men det vil 'SELECT `from` FROM tabell WHERE ...'. Lenke til kommentar
TheClown Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 $sporring = "SELECT felter FROM rofl WHERE id = $INJECT_STRING"; Trenger ikke alle de andre apostrofene, det der funker helt fett Lenke til kommentar
Wackamole Skrevet 5. desember 2009 Del Skrevet 5. desember 2009 TheClown, grunnen for at vi setter klammer eller "gåseøyne" før og etter variabler er for at det skal bli lettere oversikt i en SQL setning over hva som er variabler. Hva ser best ut? $sql = 'SELECT clientID, caseID, caseTitle FROM crm_cases WHERE clientID = '{$clientID}'"; $sql = 'SELECT clientID, caseID, caseTitle FROM crm_cases WHERE clientID = $clientID"; Nå som det er sagt, så finner jeg ikke igjen php taggene som forumet her hadde en gang i tiden, dær vil du se på fargekodene hvilken forskjell det utgjør. - I et redigeringsprogram med code highlighting vil det bli mye mer oversiktlig. Lenke til kommentar
TheClown Skrevet 5. desember 2009 Del Skrevet 5. desember 2009 Joda, det er sant, men alt fungerer. Var det ikke det trådstarteren lurte på? Lenke til kommentar
medlem-68510 Skrevet 5. desember 2009 Del Skrevet 5. desember 2009 Om du ser på bb code-hjelpen vil du finne SQL-tags =) Lenke til kommentar
Wackamole Skrevet 5. desember 2009 Del Skrevet 5. desember 2009 Joda, det er sant, men alt fungerer. Var det ikke det trådstarteren lurte på? Han spurte faktisk etter rikig syntaks på spørringen, noe som gjør det vi diskuterer offtopic.. Lets leave it Lenke til kommentar
nilsh Skrevet 5. desember 2009 Forfatter Del Skrevet 5. desember 2009 Joda, det er sant, men alt fungerer. Var det ikke det trådstarteren lurte på? Han spurte faktisk etter rikig syntaks på spørringen, noe som gjør det vi diskuterer offtopic.. Lets leave it Yes! HAr fått svar på det jeg lurte på! Takk! 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å