2016-11-05 5 views
0

ich viele Daten aus Excel in einer Tabelle (etwa 4000 Zeilen) Throught Ajax innerhalb einer Schleife eingefügt habe ich verwenden:Mysql Masseneinfügung nicht alle Daten Einfügen

$query = "INSERT IGNORE INTO ".$params["table"]." (".$colonnes_string.") VALUES (".$row.")"; 

Diese Abfrage funktioniert gut, aber es nur 1000 einfügen Zeilen von 4000, kann einige einfügen Fehler haben, warum ich IGNORE-Anweisung festlegen, aber es immer noch nicht über 1000 Zeilen einfügen.

Wie kann ich Einfügen Fehler überspringen und die Abfrage fortsetzen?

Vielen Dank.

+0

Wie groß sind die Reihen Sie versuchen, einfügen? –

+0

Wenn Sie die Option Insert ignorieren verwenden, wird die Zeile tatsächlich nicht eingefügt, wenn sie zu einem doppelten Schlüssel führt ... kein Wunder, warum nur 1000 Zeilen eingefügt werden –

+0

Vielleicht ist dieser Beitrag hilfreich http://stackoverflow.com/questions/548541/insert -ignore-vs-insert-auf-duplicate-key-update –

Antwort

1

Sie können mehrere Zeilen mit dieser Syntax einfügen:

$query = " 
    INSERT INTO some_table 
     (column_name) 
    VALUES 
     ('value'), 
     ('another value'), 
     ('and again'), 
     ... 
     ('a last one'); 
"; 

So werden Sie die Abfrage mit allen VALUES und dann INSERT sie alle auf einmal bauen.

das heißt:

// Set the first part of the query with table name and column(s) 
$query = "INSERT INTO some_table (some_column) VALUES "; 

foreach ($rows as $row) { 
    // concatenate the query with values in a loop 
    $query .= "(".$row."),"; 
} 

// replace last comma with semi-column to get the right syntax 
$query = substring($query, 0, -1).";"; 

Hoffe, es hilft.

+0

Hallo, ich verstehe Ihre Abfrage nicht, warum $ Zeilen [$ i] als $ Zeile [$ i]? – user44321

+0

Sorry, mein Schlechter. Ich habe meine Antwort korrigiert. – JazZ

+0

Vielen Dank, also ist Zeile ein Array? Ich muss das nicht implodieren? – user44321