Newsgroup: it.comp.www.php
Titolo: php e mysql

Ciao a tutti.
Tramite form riesco ad inserire dei dati dentro un db mysql.
Volevo fare in modo che se un dato dentro il db già esiste non mi permette
di reinserirlo, in modo da non avere dati doppi all'interno di tutte le
colonne.
Sò che il primary key è l'unico a dover per forza variare, ma mi serve anche
che tutti gli altri dati siano univoci.
Grazie mille.
_
D.

 wrote in news:okET7.19$
WT4...@news.it.colt.net
:

alter table table_name add unique (col1, col2, col3...);
dentro alle parentesi puoi specificare se deve essere univoco un campo solo 
o + campi.
vedi manuale!
ciao

 wrote in message
news:okET7.19$WT4...@news.it.colt.net...

Non sei stato chiarissimo, ma se definisci come primary key l'id e anche il
campo nome ad esempio, se tenti di fare un insert di pippo se questo già
esiste non viene inserito
PRIMARY KEY (id,nome)
Era questo???

 wrote in
news:9vn41s$gf9r8$
1...@ID-106340.news.dfncis.de
: 

ti sbagli...
mysql> create table pluto (id integer not null, nome char(10) not
null,primary key (id, nome)); Query OK, 0 rows affected (0.03 sec)
mysql> desc pluto;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  |      | PRI | 0       |       |
| nome  | char(10) |      | PRI |         |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into pluto values (1, 'pippo');
Query OK, 1 row affected (0.00 sec)
mysql> insert into pluto values (2, 'pippo');
Query OK, 1 row affected (0.00 sec)
mysql> select * from pluto;
+----+-------+
| id | nome  |
+----+-------+
|  1 | pippo |
|  2 | pippo |
+----+-------+
2 rows in set (0.01 sec)
invece:
mysql> create table pluto (id integer not null, nome char(10) not
null,primary key (id), unique (nome)); Query OK, 0 rows affected (0.02
sec) 
mysql> insert into pluto values (1, 'pippo');
Query OK, 1 row affected (0.00 sec)
mysql> insert into pluto values (2, 'pippo');
ERROR 1062: Duplicate entry 'pippo' for key 2
mysql>
perché la chiave rimane id ma dico che nome deve essere univoco!!
ciao

> ti sbagli... ???????????????

Grazie per la precisazione,
Io ho provato con mysqlfront (tool grafico per gestire MySql), su 2000 , se
creo una tabella che ha come chiave primaria id e nome, assolutamente non mi
fa inserire un record uguale stesso id e stesso nome, altrimenti perche' si
chiama chiave primaria?
Poi mi sono creato uno script veloce: (L'ho copiato da uno gia' che avevo
con delle classi mie).
     $mysql_link = connect_toDB("$SERVER", "$USERNAME", "$PASSWORD");
     if(!$mysql_link){
      echo "Errore connnessione DB";
      exit;
     }
        $bconn_DB = select_DB("$DATABASE", $mysql_link);
        if(!$bconn_DB){
         echo "Errore nella connessione al db ".$DATABASE;
         exit;
        }
        $SQL="insert into pluto values (1, 'pippo')";
        $result_set = exec_query($SQL);
        if($result_set){echo "OK";}else{echo "no";}
Io chiamo la pagina la 1° volta e ok inserisce, ma se la richiamo o refresho
non fa nessun insert, e il ritorno della funz. è false,perche???
Ciao.

 false,perche??? 
perché duplichi la chiave!! (cioè la coppia id, nome)
se cambi l'id (e metti 2), vedi che funziona (perché la chiave cambia con 
l'id).
oppure puoi tenere l'id 1 e cambiare il nome.
basta che non ci siano 2 record che abbiano stesso id e stesso nome.
forse non sono stato molto chiaro...
ciao

 wrote in message
news:Xns917B7A2FD2...@10.16.96.46...

Finalmente ho capito, non ci arrivavo.
Mi sono "impiantato" su questa cosa.
Cmq grazie non mi era venuto in mente del unique nella creazione del DB
Ciao.