16. december 2008 - 14:54Der er
11 kommentarer og 1 løsning
Omvendt brug af LIKE
Hej Eksperter!
Jeg har en problemstilling jeg ikke lige ved hvordan jeg konstruerer. Jeg har en tilmeldingsformular, og har i den forbindelse oprettet en tabel over kombinationer man IKKE skal kunne oprette.
Jeg har denne tabel med blokkeringerne:
CREATE TABLE blokkering ( id int(12) NOT NULL auto_increment, mail varchar(55) NOT NULL, brugernavn varchar(55) NOT NULL, navn varchar(55) NOT NULL, adresse varchar(55) NOT NULL, postnr varchar(55) NOT NULL, postby varchar(55) NOT NULL, land varchar(55) NOT NULL, tlf varchar(55) NOT NULL, mobil varchar(55) NOT NULL, PRIMARY KEY (id) );
INSERT INTO blokkering (id,mail,brugernavn,navn,adresse,postnr,postby,land,tlf,mobil) VALUES (null,'','','Hans*','','8?00','','','','');
Altså må ens navn fx ikke starte med Hans hvis man bor i postnumrene 8000, 8100, 8200, 8300, ..., 8900
Hvordan laver man sådan en sql-forespørgsel, hvor man får go/no-go for ens data?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
det var sådanset også det jeg havde tænkt mig (kan godt se jeg ikke har formuleret mig så godt!) mysql skal blot returnere om der findes rækker i blokkeringstabellen som passer til det indtastede data, hvorefter jeg bagefter vil indsætte dataen.
problemet (som jeg ser det) er at man jo normalt kan skrive "navn LIKE '%?navn%'". I mit tilfælde så ligger %'erne (endda i forkert format) i tabellen og ikke i selve sql-sætningen - kan LIKE stadig bruges så?
jeg har sgu lidt svært ved at formulere mit problem, håber du/nogen forstår hvad jeg mener :)
hvis jeg laver denne sætning: (postdata som php-variabler)
SELECT id FROM blokkering WHERE (brugernavn = '' OR brugernavn LIKE '$brugernavn') AND (mail = '' OR mail LIKE '$mail') AND (navn = '' OR navn LIKE '$navn') AND (adresse = '' OR adresse LIKE '$adresse1') AND (adresse = '' OR adresse LIKE '$adresse2') AND (postnr = '' OR postnr LIKE '$postnr') AND (postby = '' OR postby LIKE '$postby') AND (tlf = '' OR tlf LIKE '$tlf') AND (mobil = '' OR mobil LIKE '$mobil')
så virker det ikke, dog virker det hvis man indsætter en "tom" række, hvilket også er meget logisk, men skulle jo gerne kunne indsætte nogen begrænsninger
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.