PDO-ban UPDATE parancs miért nem működik?
Adott az alábbi kód. A probléma a következő: a kód nem módosítja az sql táblázatban az adatot. Mi lehet a probléma?
$active= "1";
$sql = "UPDATE people SET active='$active' WHERE email='$email'";
$query = $connect->prepare($sql);
És így?
$sql = 'UPDATE people SET active=$active WHERE email=$email';
Ha nincsenek előformázott változók, akkor felesleges a prepare-t használni, nyugodtan mehet query-vel is.
$query = $connect->query($sql);
Mellesleg azt ugye tudod, hogy a prepare csak előkészíti a lekérdezést, de nem hajtja végre? A végrehajtést az execute végzi.
Ld:
1, kell rá hívni egy execute-ot.
2, ilyet NEM CSINÁLUNK prepared statementeknél, hogy beletesszük a változókat. Így semmi értelme, ugyan úgy tesztel bele egy óriási SQLInjection hibát!
A megoldás helyesen:
$sql = "UPDATE people SET active = :active WHERE email = :email";
$stmt = $connect->prepare($sql);
$stmt-> bindParam(':active', $active, PDO::PARAM_INT);
$stmt-> bindParam(':email', $email, PDO::PARAM_STR); //itt a PDO::PARAM_STR elhagyható mondjuk, mivel az a default
$stmt->execute();
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!