Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 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 ...?
$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.
-
typuju ze do WHERE bude potřeba zadat uniq key který se nemění
-
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)
-
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...
-
Ahoj,
poradil by někdo jak nejlépe provést Update záznamu, který je použit v klausuli WHERE ...?
Co takhle?
$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"],
]);
-
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í
-
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
-
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.
-
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.
-
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ů :_)