PHP multiple update sql

PHP multiple update sql
« kdy: 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


Re:PHP multiple update sql
« Odpověď #1 kdy: 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.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:PHP multiple update sql
« Odpověď #2 kdy: 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();
}

Re:PHP multiple update sql
« Odpověď #3 kdy: 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?

hechj

Re:PHP multiple update sql
« Odpověď #4 kdy: 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š.