PHP PDO - SQL Update

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
PHP PDO - SQL Update
« kdy: 15. 04. 2019, 18:05:33 »
Ahoj,
poradil by někdo jak nejlépe provést Update záznamu, který je použit v klausuli WHERE ...?
Kód: [Vybrat]
      $prepared = $pdo->prepare("UPDATE prodlist SET
      Commission = :Commission,
      Letter = :Letter,
      DeliveryDate = :DeliveryDate,
      Status = :Status,
   WHERE Commission = :Commission");
      $prepared->execute([
    'Commission' => $UpdateDecoded["Commission"],
    'Letter' => $UpdateDecoded["Letter"],
    'DeliveryDate' => $UpdateDecoded["DeliveryDate"],
    'Status' => $UpdateDecoded["Status"],
  ]);
pokud ve formuláři změním input Commission a updatnu ho, tak se logicky začně provádět WHERE něčeho co ještě neexistuje.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Update
« Odpověď #1 kdy: 15. 04. 2019, 18:15:50 »
typuju ze do WHERE bude potřeba zadat uniq key který se nemění
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:PHP PDO - SQL Update
« Odpověď #2 kdy: 15. 04. 2019, 19:13:09 »
1) kdyz to neexistuje tak se to nemuze updatovat
2) WHERE nepotrebuje nutne unique key, to bys musel pak delat update po jednom zaznamu
3) dal jsi nam prilis malo informaci. nejaky ID(auto increment) by se tam hodil, ale nemusi tomu tak byt vzdy. nebo si proste pridej do formulare hidden field old_commission a ten dej do where (ovsem muze to mit negativni dopad na security)
Děkuji za možnost editace příspěvku.

Re:PHP PDO - SQL Update
« Odpověď #3 kdy: 15. 04. 2019, 21:17:50 »
Pokud záznam neexistuje, musíte ho nejdřív vložit pomocí INSERT, teprve pak ho můžete změnit pomocí UPDATE. Pokud chcete aktualizovat jen jednu konrétní položku, zavoláte UPDATE a v části WHERE uvedete primární klíč. To je typické použití. Chcete-li něco konkrétnějšího, uveďte alespoň strukturu databáze...

Re:PHP PDO - SQL Update
« Odpověď #4 kdy: 15. 04. 2019, 21:27:53 »
Ahoj,
poradil by někdo jak nejlépe provést Update záznamu, který je použit v klausuli WHERE ...?
Co takhle?
Kód: [Vybrat]
      $prepared = $pdo->prepare("UPDATE prodlist SET
      Commission = :Commission,
      Letter = :Letter,
      DeliveryDate = :DeliveryDate,
      Status = :Status,
   WHERE Commission = :OriginalCommission");
      $prepared->execute([
    'Commission' => $UpdateDecoded["Commission"],
    'OriginalCommission' => $UpdateDecoded["OriginalCommission"],
    'Letter' => $UpdateDecoded["Letter"],
    'DeliveryDate' => $UpdateDecoded["DeliveryDate"],
    'Status' => $UpdateDecoded["Status"],
  ]);


ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Update
« Odpověď #5 kdy: 16. 04. 2019, 10:55:44 »
díky za podněty...
naznal jsem, že nejlepší bude v databázi vytvořiit sloupec ID a na něm AutoIncrement
a Update provádět přes tento ID, který se nikdy nezmění
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ETNyx

Re:PHP PDO - SQL Update
« Odpověď #6 kdy: 16. 04. 2019, 11:31:43 »
Případně je teoreticky možné využít konstrukcí: INSERT ON DUPLICATE KEY UPDATE

Takto nebude nutné mít dva dotazy pro insert a update

Kit

  • *****
  • 705
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Update
« Odpověď #7 kdy: 16. 04. 2019, 12:03:35 »
naznal jsem, že nejlepší bude v databázi vytvořiit sloupec ID a na něm AutoIncrement
a Update provádět přes tento ID, který se nikdy nezmění

Ti tam ten sloupeček s ID nemáš? To je docela zásadní nedostatek.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:PHP PDO - SQL Update
« Odpověď #8 kdy: 16. 04. 2019, 14:52:17 »
díky za podněty...
naznal jsem, že nejlepší bude v databázi vytvořiit sloupec ID a na něm AutoIncrement
a Update provádět přes tento ID, který se nikdy nezmění

Použití ID je takové klasické řešení, ale není úplně nutné. To, jak to popsal @Onehalf přesněji řeší tvůj problém.

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Update
« Odpověď #9 kdy: 16. 04. 2019, 15:49:29 »
díky hoši...řešení zmíněné od @Onehalf  je minimálně dobré mít v povědomí, pokusím se ho i nasadit z laboratorních důvodů :_)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.