Zu Deiner Abfrage: Es ist ungünstig einen Nutzer anhand dieser Daten zu identifizieren. Einerseits wäre es möglich, dass wer erfährt, der dort Mitglied ist und sich diese Daten besorgt. Andererseits muss man die Daten immer exakt so eingeben, wie sie gespeichert wurden! Wurde 'X-Straße 3' gespeichert, man gibt aber diesem 'X-Str. 3' ein, so wird kein Datensatz gefunden.
Eine Möglichkeit das zu umgehen ist jedem Nutzer eine eindeutige und einmalige NutzerID zu verpassen. Mit md5() und substr() kannst Du Dir angemessene IDs basteln.
Zum eigentlichen Problem. Um doppelte Einträge zu verhindern kannst Du Feldern das Attribut
UNIQUE (danach suchen) geben.
Sagen wir, Du hast 3 Tabellen: Nutzer, Umfragen, Stimmen. Die ersten beiden haben ein Feld ID, die beide mit PRIMARY KEY und AUTO_INCREMENT für eindeutige Zuordnung sorgen. In Stimmen speicherst Du nun die ID des Nutzers und die ID der Umfrage. Vorher muss allerdings geprüft werden, ob Nutzer_ID und Umfrage_ID schon zusammen vorhanden sind. Wenn nicht, dann wird die Stimme gewertet. Wenn ja, dann kannst Du den Nutzer ermahnen.
Alles klarofix? :)