# API-Problem - fehlerhaftes Datenbankupdate

**URL:** <https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [18. April 2013 um 01:05 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760 "2013-04-18T01:05:23Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jetwes](https://avatars.discourse-cdn.com/v4/letter/j/d2c977/32.png) [@jetwes](https://forum.shopware.com/u/jetwes)\
**Post date:** [18. April 2013 um 01:05 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/1 "2013-04-18T01:05:23Z")

</div>

Folgendes Szenario: Auf demselben Server im gleichen Verzeichnis liegen 2 Scripte. Beide Scripte sollen den Lagerbestand der Artikel aktualisieren. Beide Scripte liefern ein HTTP 200 SUCCESS. Script A ist ein Testscript, hier wird ansonsten nichts anderes gemacht: `$client-\>put('articles/2237', array( 'mainDetail' =\> array( 'inStock' =\> 200 ) ));` In Script B laufen vorab and anschliessend diverse andere (nicht Shopware betreffende Abfragen, der Shopware-Teil: `$client-\>put('articles/'.$article\_id, array( 'mainDetail' =\> array( 'inStock' =\> 200 ) ) );` $article\_id ist ebenfalls 2237. Ich erhalte bei beiden die 200 Success Meldung mit der id 2237. Soweit also korrekt. Allerdings wird bei Script A die Datenbank korrekt geändert (instock hat anschliessend den Wert 200), während bei Script B der Wert von instock auf NULL gesetzt wird??? Womit kann das zusammenhängen? Ich komme hier nicht weiter… Danke UPDATE: Interessant ist auch, dass wenn ich in Script B im Anschluss an $client-\>put ein $client-\>get(‚articles/‘.$article\_id); durchführe hier der korrekte Bestand angezeigt wird, in der Datenbank aber NULL steht… UPDATE 2: Ich verwende Shopware 4.0.5 UPDATE 3: Ein Update auf Shopware 4.0.7 brachte auch keinen Erfolg

---

<div class="post-metadata">

**Author:** ![ovi](https://avatars.discourse-cdn.com/v4/letter/o/3ab097/32.png) [@ovi](https://forum.shopware.com/u/ovi)\
**Post date:** [18. April 2013 um 09:16 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/2 "2013-04-18T09:16:43Z")

</div>

Hängt’s vielleicht damit zusammen, dass du von Id 2337 redest, aber eigentlich 2237 meinst (wie in Script A zu sehen ist)?

---

<div class="post-metadata">

**Author:** ![jetwes](https://avatars.discourse-cdn.com/v4/letter/j/d2c977/32.png) [@jetwes](https://forum.shopware.com/u/jetwes)\
**Post date:** [18. April 2013 um 09:22 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/3 "2013-04-18T09:22:58Z")

</div>

nein, war ein Schreibfehler in meinem Post. Die ID ist definitiv identisch, es wird ja auch etwas in die Datenbank geschrieben (beim korrekten Artikel), aber leider NULL anstatt 200… Ich habe meinen POST dementsprechend korrigiert. Ich kann in Script B die 2237 auch im Klartext wie in Script A übergeben - gleicher Effekt… Danke trotzdem

---

<div class="post-metadata">

**Author:** ![jetwes](https://avatars.discourse-cdn.com/v4/letter/j/d2c977/32.png) [@jetwes](https://forum.shopware.com/u/jetwes)\
**Post date:** [18. April 2013 um 10:22 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/4 "2013-04-18T10:22:23Z")

</div>

Ich konnte das Problem weiter eingrenzen bzw. folgendes feststellen: Es wird zuerst der korrekte Wert in die DB geschrieben (200) und anschliessend mit NULL überschrieben??? Auszug aus dem MYSQL LOG: 130418 10:15:37 284 Query START TRANSACTION 284 Query UPDATE s\_articles\_details SET instock = ‘200’ WHERE id = ‘2237’ 284 Query commit 284 Quit 130418 10:15:39 285 Query START TRANSACTION 285 Query UPDATE s\_articles\_details SET instock = NULL, shippingtime = ‘4’ WHERE id = ‘2237’ 285 Query commit Im Script gibt es definitv nur ein $client-\>put ! Woran kann das liegen??? UPDATE: wenn ich z.b. gleichzeitig die “supplierNumber” ändere (in mainDetail), so wird diese korrekt übernommen - nur der Bestand nicht…

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [19. April 2013 um 08:58 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/5 "2013-04-19T08:58:20Z")

</div>

Hallo, hm, beide Abfragen sind ja eigentlich erstmal identisch (davon ausgehend, dass die Variable passt). So gesehen würde ich schon stark vermuten, dass es mit dem Skript zusammen hängt. Zumindest kann ich mit deinem Array das Verhalten so nicht reproduzieren. Kannst du mir ein Array geben, dass den Fehler definitiv verursacht? Oder gerne auch eine Kombination von Abfragen…? Vielen Dank schonmal, Daniel

---

<div class="post-metadata">

**Author:** ![jetwes](https://avatars.discourse-cdn.com/v4/letter/j/d2c977/32.png) [@jetwes](https://forum.shopware.com/u/jetwes)\
**Post date:** [19. April 2013 um 10:32 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/6 "2013-04-19T10:32:52Z")

</div>

Ich denke auch, dass es am Script liegt - weiß aber nicht wieso, da nur ein client-\>put ausgeführt wird. Hier ein aktuelles Beispiel: ` $client-\>put('articles/'.$article\_id, array( 'supplierId' =\> $supplier\_id, 'mainDetail' =\> array( 'inStock' =\> $lagerbestand, 'supplierNumber' =\> $supplier\_id ) )); ` Hier die Serverantwort: [quote]HTTP: 200 Success Array ( [id] =\> 2240 [location] =\> [http://fachhandel.bleicher-otto.de/api/articles/2240](http://fachhandel.bleicher-otto.de/api/articles/2240) ) [/quote] Das steht in der DB: [quote] id articleID ordernumber suppliernumber kind additionaltext impressions sales active instock stockmin weight position width height length ean unitID purchasesteps maxpurchase minpurchase purchaseunit referenceunit packunit releasedate shippingfree shippingtime 2240 2240 TPH-0070008798 2 1 NULL 0 0 1 NULL NULL 0.000 0 0.000 0.000 0.000 NULL NULL NULL NULL NULL NULL NULL 0 4[/quote] Hier die MYSQL LOG: [quote] 279 Query START TRANSACTION 279 Query UPDATE s\_articles\_details SET suppliernumber = ‚2‘, instock = ‚150‘ WHERE id = ‚2240‘ 279 Query commit 280 Query START TRANSACTION 280 Query UPDATE s\_articles\_details SET instock = NULL, shippingtime = ‚4‘ WHERE id = ‚2240‘ 280 Query commit [/quote] Ich verstehe es nicht… Im script wird mittels new SoapClient auch eine Verbindung zu einem anderen System hergestellt, kann das irgendwie damit zusammenhängen? Danke vorab

---

<div class="post-metadata">

**Author:** ![jetwes](https://avatars.discourse-cdn.com/v4/letter/j/d2c977/32.png) [@jetwes](https://forum.shopware.com/u/jetwes)\
**Post date:** [19. April 2013 um 10:38 UTC](https://forum.shopware.com/t/api-problem-fehlerhaftes-datenbankupdate/12760/7 "2013-04-19T10:38:19Z")

</div>

AHHHH! Ich habe das Problem lokalisiert. Sorry für die Umstände. Das Problem ist, das unser WWS (Actindo) nach meiner Aktualisierung den Bestand automatisch angepasst hat und hier ein falscher Wert übergeben wird. Ich habe die automatische Bestandssynchronisation im WWS ausgeschaltet und siehe da - alles läuft wie gewünscht. Danke trotzdem - vielleicht hilft diese Info später mal bei ähnlichen Problemen.
