[mal so am Rande bemerkt:]
Um in einer Tabelle UNIQUE-Felder zu definieren, verwendest du den alter table/modify befehl
mysql_query("alter table $table modify $spalte typ | [NOT NULL] | [UNIQUE] | [PRIMARY KEY] | [AUTO_INCREMENT]...");
sind wohl die wichtigsten Eigenschaften.
Der "typ" ist der Datentyp der Spalte.
Ich empfehle hierzu SQL in 21 Tagen Kap 1-8
Zum eigentlichen Problem:
Syntax:
if((mysql_count_rows($sql) > 0)
wäre besser.
Problem:
Ließe sich mit unique viel besser lösen, einfach keine Fehlermeldung bei Misserfolg ausgeben.
@mysql_query("insert into pins values $pin");...
(oder so)
Ein @ vor dem Funktionsaufruf unterbindet die Fehlermeldung.
Und wenn du eine Statistik haben willst, wie oft eine PIN 2x vorkommt, machst du das in etwa so:
$q = mysql_query(...);
if(!($q))
{
$misserfolg =1
}
oder sowas.
Gar keine komplizierten Scripts benutzen, die unique PINs zuweisen...einfach auf mysql vertrauen