Warum keine Daten in der DB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Warum keine Daten in der DB

    Hallo zusammen,

    zunächst einmal möchte ich mich kurz vorstellen.
    Mein Name ist Michael, und ich bin mehr oder weniger hobbymäßig an PHP interessiert.

    Nach dem ich mich immer so durchkämpfe habe ich nun eine neue Herausforderung welche ich lösen möchte.

    Hierbei wäre ich sehr dankbar über Lösungsvorschläge.

    Aufgabenstellung

    4000 Datensätze befinden sich in einem Array welcher aus einer XML datei erzeugt wurde.

    Der aufbau der XML sieht grob so aus.

    Code:
    <?xml version="1.0"?>
    <Items_Transfer>
      <Sender>PAP*****</Sender>
      <Receiver>Shop Kunden</Receiver>
      <Transaction_No>33**856**</Transaction_No>
      <Items>
        <Item>
          <Item_No>84**5**81</Item_No>
          <Item_Description>Zuckerrohr weiss</Item_Description>
          <GTIN_Pack>4002911845813</GTIN_Pack>
          <GTIN_Carton>4002911973394</GTIN_Carton>
          <GTIN_Pallet>4049026717925</GTIN_Pallet>
            usw....usw
          <Material>Zuckerrohr</Material>
          <PacksPerDispatchUnit>12</PacksPerDispatchUnit>
          <ContentPerPack>12</ContentPerPack>
          <ContentPerPack_UnitOfMeasure>Stück</ContentPerPack_UnitOfMeasure>
          <KindOfPackaging_Pack>Folie</KindOfPackaging_Pack>
          <Height_Pack>18</Height_Pack>
          <Width_Pack>18</Width_Pack>
          <Depth_Pack>3</Depth_Pack>
          <Weight_Pack>113,8</Weight_Pack>
          <KindOfPackaging_Carton>Karton</KindOfPackaging_Carton>
          <Height_Carton>21</Height_Carton>
          <Width_Carton>20</Width_Carton>
          <Depth_Carton>38</Depth_Carton>
          <Weight_Carton>1634</Weight_Carton>
          <Volume_Carton>,016</Volume_Carton>
          <CartonsPerPaletteTier>12</CartonsPerPaletteTier>
          <BoxesPallet>60</BoxesPallet>
        
       usw....usw....
          
          <StockAvailability>1</StockAvailability>
          <Stocklot>0</Stocklot>
          <StockAvailabilityCarton>1</StockAvailabilityCarton>
          <StockAvailabilityPack>0</StockAvailabilityPack>
          <StockAvailabilityPallet>1</StockAvailabilityPallet>
        </Item>
    usw......
    Alles ist im Array, soweit so gut.

    Nun sollen teile dieser Daten in eine Datenbank gespeichert werden.
    Die Daten kommen bei einem ECHO aufruf einer einzelnen spalte in der foreach schleife auch schön 4000x raus.

    Nur leider packt er mir die nicht in die Datenbank.

    Was mach ich hier falsch?

    Code:
                
    //Verbindung herstellen
    $link = mysqli_connect($db_host, $db_user, $db_pass, $db_name) or die("Error " . mysqli_error($link));;
    
    
    
    // erstellen der Tabellenstruktur und löschen alter tabellen.
    $link->query("DROP TABLE IF EXISTS papstaritems");
    $link->query("CREATE TABLE IF NOT EXISTS papstaritems (
                      ID        INT AUTO_INCREMENT PRIMARY KEY,
                      LieferantenArtikelNummer      INT(11),
                      ArtikelBezeichnung             VARCHAR(70),
                      Hersteller                    VARCHAR(70),
                      GTIN                            INT(70),
                      LaengenEinheit                  INT(11),
                      GewichtsEinheit                  INT(11),
                      Hoehe                          INT(11),
                      Breite                          INT(11),
                      Tiefe                          INT(11),
                      Gewicht_g                        INT(11),
                      Inhalt                          INT(11),
                      EmpfohlenerVK                    INT(11),
                      EK                            INT(11),
                      Verfuegbarkeit                INT(11),
                      Beschreibung                    VARCHAR(255),
                      Bild1                            VARCHAR(255)
    
                        )
                    ");
        
    
    
    // aufruf der Function PapstarLaden (siehe functions.php)- baut FTP Verbindung zu Papstar auf,
    // lädt die Datei herunter, und speichert diese unter neuem Namen lokal ab.
    papstar_laden ();        
    
            
    //laden des XML Files mit den Artikeln in den Array
                    
    $xmlstr = simplexml_load_file($local_file); 
    
    // Tabellen mit daten füllen
    foreach ($xmlstr->Items->Item as $row) {
                
                    $bild = $medialink. $row->Item_No. $imageErw;
                    
                    
                    $link->query("INSERT INTO papstaritems (
                                                        LieferantenArtikelNummer,
                                                        ArtikelBezeichnung,
                                                        Hersteller,
                                                        GTIN,
                                                        LaengenEinheit,
                                                        GewichtsEinheit,
                                                        Hoehe,
                                                        Breite,
                                                        Tiefe,
                                                        Gewicht_g,
                                                        Inhalt,
                                                        EmpfohlenerVK,
                                                        EK,
                                                        Verfuegbarkeit,
                                                        Beschreibung,
                                                        Bild1                                                    
                                        )
                                        VALUES (
                                                        $row->Item_No, 
                                                        $row->Item_Description, 
                                                        $row->Brand,
                                                        $row->GTIN_Pack,
                                                        $row->Height_UnitOfMeasure,
                                                        $genGewEinh,
                                                        $row->Height_Pack,
                                                        $row->Width_Pack,
                                                        $row->Depth_Pack,
                                                        $row->Weight_Pack,
                                                        $row->ContentPerPack,
                                                        $row->RecommendedRetailPrice_Carton,
                                                        $row->InvoicePrice_PAPSTAR_Carton,
                                                        $row->StockAvailability,
                                                        $row->AdvertisingText,
                                                        $bild                                        
                                                )
                                    ");
                    
            }
    $link->close();
    Vielen Dank für eure Hilfe schon einmal.

    Lg

    Micha
    Zuletzt geändert von Bengelbaer; 15.10.2015, 19:27. Grund: test

  • #2
    Du ignorierst den Kontextwechsel. Werte, die du in SQL-Code einfügst, musst du escapen. Davon abgesehen gehören Strings in SQL-Code in Hochkomma gesetzt.

    Desweiteren ignorierst du die Fehlermeldungen, die du von der Datenbank bekommst. query() liefert einen Rückgabewert. Warum wertest du diesen nicht aus?

    Kommentar


    • #3
      zunächst einmal....... klasse...
      vielen Dank die Hochkommas..... das war der Hauptfehler.

      Jetzt packt er alles in die DB....

      Aber das mit dem escapen wie geht das?
      Hier geht es doch um sonderzeichen oder Zeichen die SQL stören oder?

      Wie kann ich so was jetzt einbauen?

      Kommentar


      • #4
        Zitat von Bengelbaer Beitrag anzeigen
        Aber das mit dem escapen wie geht das?
        So wie es in der verlinkten Doku steht.

        Kommentar

        Lädt...
        X