2016-09-12 1 views
0

PHP I dynamisch mehr Werte generieren und sie in eine Tabelle einfügen, vereinfachtes Beispiel eines Einsatzes mit einigen Werten:Mysql mehrere Zeilen einfügen, wenn jeder nicht zwischen 2 Spaltenbereich?

INSERT INTO table (time1,time2) 
VALUES ('08:00','09:00'),('09:00','10:00'),('11:00','12:00'); 

Mit dem obigen Beispiel würde Ich mag, dies verhindern Einfügen:

INSERT INTO table (time1,time2) 
    VALUES ('08:15','08:45'),('09:30','12:00'); 

Kann man beim Einfügen mehrerer Werte einen Bereichsvergleich zwischen 2 Spalten vornehmen? Oder müsste ich eine Schleife mit einzelnen Einfügungen machen (die ich aus Leistungsgründen vermeiden möchte)?

EDIT: Ich reiche die Daten per Formular mit PHP. Ich denke, der logische Schritt besteht darin, $ _POST-Werte zu verwenden und eine SELECT-Prüfung durchzuführen, wenn die Zeitkonflikte auftreten. Ob man BETWEEN in SELECT verwenden oder alle Werte für eine PHP-Funktion zurückgeben möchte, ist eine andere Sache.

+0

** Warum ** Warum auf mysql alle Last gelegt? Überprüfen Sie dies in PHP, außerdem können Sie keine WHERE-Klausel in die INSERT-Anweisung einfügen. – Shaharyar

+0

Vor allem, was ist der Datentyp dieser Spalten in Ihrer Datenbank? Das vereinfachte Beispiel sieht so aus, als ob Sie Zeichenfolgen verwenden, um Zeiten zu registrieren. Das wird es schwer machen, irgendetwas zu vergleichen. – AsheraH

+0

@AsheraH Ich verwende TIME als Datentyp –

Antwort

0

prüfen indivisual Einträge php bilden, benutzen Sie diese Abfrage die Anzahl der Konflikte zu überprüfen, wird der neue Eintrag machen:

SELECT count(*) as `conflicts` 
    FROM table 
WHERE 
    '08:15' BETWEEN time1 AND time2 -- user your variable here 
    OR 
    '08:45' BETWEEN time1 AND time2 -- user your variable here 
Verwandte Themen