Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Wangarad 02. 11. 2020, 16:13:50

Název: PHP multiple update sql
Přispěvatel: Wangarad 02. 11. 2020, 16:13:50
Zdravim.
Ako efektivne vyriesit update sql ak mam len v tabulke ID a hodnotu a s formulara mi prichadza len hodnota?
Vzdy pride 10 cisiel a pridu postupne ako potrebujem ale nemam ID.
Zatial je to uplne debilne v style
Kód: [Vybrat]
$L1 = $_POST['1'];
$sql = "UPDATE production_reqest SET pieces='$L1' WHERE id =1";
$result = $mysqli->query($sql);
$L2 = $_POST['2'];
$sql = "UPDATE production_reqest SET pieces='$L2' WHERE id =2";
$result = $mysqli->query($sql);
$L3 = $_POST['3'];
$sql = "UPDATE production_reqest SET pieces='$L3' WHERE id =3";
ale rad by som to zlepsil lebo do buducna moze byt milion requestov.
Dik za ideu
Název: Re:PHP multiple update sql
Přispěvatel: AoK 02. 11. 2020, 16:25:18

Kód: [Vybrat]
INSERT INTO production_reqest (id,pieces) VALUES ($id1,$L1),($id2,$L2),($id3,$L3) ON DUPLICATE KEY UPDATE pieces=VALUES(pieces);
Samozřejmě předpokládám, že proměnné ošetříš proti sql injection ideálně nějakým prepared statement nebo aspoň je escapuješ. To ID musí být sloupeč s primárním klíčem nebo aspoň unikátním indexem.
Název: Re:PHP multiple update sql
Přispěvatel: Kit 02. 11. 2020, 17:00:24
Kód: [Vybrat]
$sql = "UPDATE production_reqest SET pieces=? WHERE id=?";
$update = $mysqli->prepare($sql);
foreach ($_POST as $key => $value) {
    $update->bind_param("si", $value, $key);
    $update->execute();
}
Název: Re:PHP multiple update sql
Přispěvatel: Wangarad 02. 11. 2020, 19:09:08
myslim si spravne ze
Kód: [Vybrat]
INSERT INTO production_reqest (id,pieces) VALUES ($id1,$L1),($id2,$L2),($id3,$L3) ON DUPLICATE KEY UPDATE pieces=VALUES(pieces);
zatazuje server menej? Teda menej poziadaviek?
Název: Re:PHP multiple update sql
Přispěvatel: hechj 02. 11. 2020, 23:42:44
V tom formuláři musíš mít ID svázané s hodnotou. ID dej do hidden prvku. Musíš to ale inteligentně pojmenovat, aby vzniklé pole bylo lehce iterovatelné. Jak vůbec můžeš mít formulář na update hodnot, když nevíš, které hodnoty updatuješ? Když updatuješ, používej update syntaxi. Nemíchej to dohromady s insertem (on duplicate key). Dokud nevyřešíš tohle, tak zátěží sql serveru se vůbec zabývat nemusíš. Tak daleko se nedostaneš.