Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    19

    Valori duplicati db-MySQL

    Ciao a tutti,

    è possibile gestire gli errori con mysql e non con php, in maniera tale da non fare inutili select? Mi spiego :

    Ho una tabella per gli utenti, e vorrei che gli ogni utente differisca dall'altro per username ed email. A questo punto , in fase di registrazione, per controllare se un utente è gia registrato con quell'user o email andrebbe fatta una select. Per evitare tutti questi accessi al db (select per il controllo, eventuale insert per la registrazione) è possibile ricevere un errore dal db dopo aver fatto la insert ?

    Ho provato così :
    Codice PHP:
    CREATE TABLE IF NOT EXISTS UTENTI (

      
    user char(25NOT NULL,
      
    email char(60NOT NULL,
      
    pass char(128),
      
      
    CONSTRAINT MIACHIAVE UNIQUE (useremail)
    );

    insert into utenti(user,emailvalues('simone','simoness');
    insert into utenti(user,emailvalues('simone','simoness1111'); 
    Così facendo, se ALMENO uno dei due campi è diverso (in questo caso email) posso aggiungere entrambi i record, e ciò non soddisfa le mie esigenze. Ho provato però ad usare la clausola UNIQUE sui due campi user/email , riesco a fare ciò che desidero ma lato php poi non so quale dei due campi è stato violato, cioè se l'utente ha inserito un'email o una user gia registrata, o magari tutti e due. Il mio obiettivo è quindi quello di far fare al sito, in fase di registrazione, sempre e solo la insert, e di replicare poi all'utente l'eventuale messaggio di conferma/errore restituito dal db.

    In più, mi piacerebbe sapere se è possibile , usando la clausola CHECK , controllare che il campo mail sia del tipo '%@%.%' , in maniera tale da verificare se l'utente ha inserito una mail corretta. Forse però , dato che il mio intento è quello di fare pochi e importanti/concreti accessi al db , sarebbe meglio fare un controllo usando JavaScript.

    Potreste aiutarmi a risolvere questo piccolo problemino ? (in particolare il primo punto)

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    19
    per il momento ho risolto così


    Codice PHP:
    CREATE TABLE IF NOT EXISTS UTENTI (

      
    USER char(25UNIQUE NOT NULL,
      
    EMAIL char(60UNIQUE NOT NULL,
      
    PASS char(128),
      

      
    PRIMARY KEY PK_UTENTI (user,email)
    );


    mysqlinsert into utenti(user,emailvalues('simone','simoness');
    Query OK1 row affected (0.03 sec)

    mysqlinsert into utenti(user,emailvalues('simone','simoness1111');
    ERROR 1062 (23000): Valore duplicato 'simone' per la chiave 'USER'
    mysqlinsert into utenti(user,emailvalues('simonssse','simoness');
    ERROR 1062 (23000): Valore duplicato 'simoness' per la chiave 'EMAIL'
    mysqlinsert into utenti(user,emailvalues('simodasne','simoness1111');
    Query OK1 row affected (0.01 sec
    sembra funzionare correttamente..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.