Vor dem Einfügen auf Duplikate prüfen

7

Vor dem Einfügen in die Datenbank verwende ich den folgenden Code, um nach Duplikaten zu suchen. Für mich ist ein Duplikat nur dann ein Duplikat, wenn name , description , price , city und enddate übereinstimmen.

%Vor%

Jeder Wert wird vor dem Durchlaufen dieser Prüfung definiert, mein Ergebnis kommt immer zurück, da das Element bereits existiert. Ich habe "dupesql" abgelegt und den Befehl in phpmyadmin kopiert, was mit count 0 zurückkommt.

    
Mike 10.10.2011, 21:42
quelle

7 Antworten

12

Sie möchten Folgendes tun:

%Vor%

Siehe hier für weitere Informationen

    
hoppa 10.10.2011, 21:45
quelle
6

Wie ich es sehe, kann Ihre Frage in zwei Teile zerlegt werden. Warum funktioniert mein PHP-Code nicht? Ich weiß nicht, weiß nicht viel PHP und andere Leute scheinen das gerade beantwortet zu haben :-). Die zweite Frage ist, wie kann ich nach Duplikaten suchen? Sie suchen nach Duplikaten auf völlig falsche Weise.

Erstellen Sie eine eindeutigen Index / primary Schlüssel auf dem Tisch. Wenn Sie dann versuchen, die DB einzufügen, wird ein Fehler ausgegeben, wenn ein Duplikat vorhanden ist. Fange den Fehler und handle damit, wie du willst. Das Zählen der Datensätze ist definitiv der falsche Weg und wird die Geschwindigkeit Ihres Codes erheblich beeinträchtigen.

    
Ben 10.10.2011 21:47
quelle
1

Sie können immer noch in Race-Bedingungen hineinlaufen, wo 2 Benutzer gleichzeitig versuchen, die DuPs einzufügen, und gleichzeitig nach den DuPs mit einer select-Anweisung suchen, damit beide Benutzer ihre Datensätze einfügen können. Ich bevorzuge es, einen eindeutigen Index für die DB zu setzen und dann den Fehler zu finden, der aus der DB aufsteigt.

    
Homan 10.10.2011 21:48
quelle
0

Sie müssen nicht auf Eindeutigkeit in PHP prüfen, Sie können einfach den ganzen Test in MySQL durchführen:

%Vor%

Dies fügt nur die Werte ein, wenn sie den Eindeutigkeitstest bestanden haben.

    
Johan 10.10.2011 21:58
quelle
0

Versuchen Sie Folgendes:

%Vor%     
Puzo 10.10.2011 21:45
quelle
0

Kurz gesagt, Sie müssen Ihre Prüfung durch PHP durchführen und Sie müssen auch eine zusammengesetzte eindeutige Einschränkung in Ihrer MySQL-Tabelle hinzufügen, um das Beste aus beiden Welten zu erhalten.

Es wäre gut, wenn wir Ihre Frage in zwei getrennte Fragen aufteilen würden.

1- Wie überprüfe ich Dubletten mit PHP und benachrichtige mich über den Benutzer, bevor ich die Abfrage ausführe? 2- Wie gebe ich eine zusammengesetzte eindeutige Einschränkung in MySQL an?

Zuerst benötigen Sie eine einfache PHP-Funktion, um zu prüfen, ob dieser Datensatz in der DB existiert oder nicht, wie der folgende:

%Vor%

Sie sollten Ihre PHP-Funktion wie folgt aufrufen:

%Vor%

Auf diese Weise können Sie Dubletten verhindern, bevor Sie zur MySql-Datenbank gehen, aber um eine doppelte freie Datenbank zu haben, müssen Sie in Ihrer MySQL-Tabelle eine zusammengesetzte eindeutige Einschränkung hinzufügen.

Dieser einfache SQL-Befehl kann den Trick machen:

%Vor%

Ich hoffe, das hilft, wenn ich etwas durcheinander bringe belaste mich bitte.

    
EKY 26.08.2012 02:27
quelle
0

Versuchen Sie Folgendes

%Vor%     
Dumbdelidumbdumb 04.09.2013 07:30
quelle

Tags und Links