PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Warum keine Daten in der DB (https://www.php-resource.de/forum/php-developer-forum/105301-warum-keine-daten-in-der-db.html)

Bengelbaer 15-10-2015 20:24

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

h3ll 15-10-2015 20:58

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?

Bengelbaer 15-10-2015 21:44

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?

:danke:

h3ll 15-10-2015 22:27

Zitat:

Zitat von Bengelbaer (Beitrag 671764)
Aber das mit dem escapen wie geht das?

So wie es in der verlinkten Doku steht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:06 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG