MudGuard: Prüfen ob Datensatz existiert

Beitrag lesen

Hi,

Bisher habe ich das immer wie folgt gemacht:
$result = mysql_query("SELECT * FROM table_name WHERE Name='$name'");
$NumNames = @mysql_num_rows($result);

was riskant ist.

Zwischen der Abfrage, ob der Name existiert, und dem Einfügen des Datensatzes vergeht Zeit.
Zeit, in der sich die Existenz des Namens in der Tabelle ändern kann.

Wenn der Name in der Tabellenspalte eindeutig sein muß, dann mach, wie dedlfix schon vorschlug, einen unique-Index auf diese Spalte.
Die Prüfung vor dem Einfügen fällt dann weg - wenn der Name schon existiert, kriegst Du beim Einfügen eine entsprechende Fehlermeldung.

Man könnte zwar auch mit einer Transaktion arbeiten (Start der Transaktion, Abfragen, ob der Name in der Spalte schon existiert, falls nein, Einfügen, Ende der Transaktion), aber m.E. ist der Unique-Index der einfachere und performantere Weg.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.