2017-02-24 3 views
-1

Ich brauche Hilfe, mein Skript automatisch IDs nach einem bestimmten Symbol aus Importdokumenten sortieren, ughh, lassen Sie mich erklären.MYSQL einfügen gleiche ID anders explodieren auf Spalte

Ich habe ein Excel-Format Dokument, das so

ID____PRODUCT___________ 
1_____prod1*prod2*prod3_ 
2_____prod1*prod2*prod3_ 
3_____prod1*prod2*prod3_ 

beinhaltet, was ich tun muss, ist, sie in mysql einfügen, die wie diese

ID____PRODUCT____ 
1_____prod1______ 
1_____prod2______ 
1_____prod3______ 
2_____prod1______ 
2_____prod2______ 
2_____prod3______ 
3_____prod1______ 
3_____prod2______ 
3_____prod3______ 

so brauchen, um so aussehen würde nach jeder * es würde ein neues Objekt daraus machen, bisher habe ich dieses Skript gemacht, das es nach 2 Spalten sortiert, nur um andere Spalten sortieren zu lassen mit der gleichen ID. irgendwelche Ideen?

 while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
    { 
     $count++;          

     $expl=explode(";",$emapData[0]); $string1 = $expl[0]; $string2 = $expl[1]; 

     if($count>1){        
      $sql = "INSERT into products(a,b) values ('$string1','$string2')"; 
      mysql_query($sql); 
     }           
    } 

es ist eine csv-Datei, so ist es getrennt; deshalb muss ich es explodieren.

Also ich muss nur jedes Produkt mit neuen * einfügen, könnte ich mir vorstellen, eine andere explode zu verwenden, aber wie kann ich es zuweisen, so dass es in einer neuen Spalte mit der gleichen ID wie die erste einfügen würde?

+1

Sie müssen '$ string2' zum Explodieren von' * ', dann die Schleife durch alle Werte auch einfügen, nicht mehr verwenden' mysql() 'Funktionen! Sieh dir mysqli/pdo an. – JustBaron

+0

Ja, gut danke für Tipps und Tricks, habe es funktioniert, und ich benutze nur mysql Funktionen, denn es ist nur für den privaten Gebrauch, ich nur ein Skript hochladen, dann die Funktionen einmal im Jahr oder etwas und das ist es. Danke noch einmal! –

Antwort

0

versuchen diese

//connect using mysqli 
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
    while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
    { 
     $count++;          

     $expl=explode(";",$emapData[0]);  
     $string1 = $expl[0];//ID like 1  
     $string2 = $expl[1];//the prod1*prod2*prod3 
     $arr_of_products = explode("*",$string2); 
     foreach ($arr_of_products as $value) { 
      $sql = "INSERT into products(a,b) values ('$string1','$value')"; 
      //mysql_query($sql); do not use it 
      $result = $mysqli->query($sql); 
     } 

    } 
+0

@Strawberry Ich habe gerade die Frage beantwortet. Die Verwendung der API hängt vom Benutzer selbst ab, und er hat diesbezüglich keinen Ratschlag eingeholt. Daher sehe ich keinen Grund für einen Downvote. –

+1

Hier gibt es viele Antworten auf die Verwendung von mysql_ * -Funktionen. Aber nach 10 Jahren oder so, hören wir alle auf, diese Fragen zu beantworten und machen ** das OP-Update oder verwenden PDO oder MySQLi – davejal

+0

Noch keinen Grund für einen Downvote-IMO. Ich änderte meine Antwort sowieso –

Verwandte Themen