Kezdőoldal » Számítástechnika » Weblapkészítés » PDO-ban UPDATE parancs miért...

PDO-ban UPDATE parancs miért nem működik?

Figyelt kérdés

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);



2014. szept. 5. 18:15
 1/8 anonim ***** válasza:

És így?


$sql = 'UPDATE people SET active=$active WHERE email=$email';

2014. szept. 5. 18:37
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Így se jó!
2014. szept. 5. 18:52
 3/8 anonim ***** válasza:
Ha más nincs, akkor mindenképp szedd szét az sql stringet, aztán meglátod hogy úgy jó-e.
2014. szept. 5. 19:50
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
csak ennyi a kód? mert akkor nézz utána hogy működik a prepared stmt
2014. szept. 5. 21:04
Hasznos számodra ez a válasz?
 5/8 Drone007 ***** válasza:
100%

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:

[link]

2014. szept. 6. 08:40
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Tegnap este sikerült az INSERT-et megcsinálnom, ma megpróbálkozom az UPDATE-tal is! A kód nem csak ennyi, kb. 100 soros, ezért gondoltam, hogy nem másolom be! Ha feltétlenül kell, akkor másolom csak!
2014. szept. 6. 10:30
 7/8 anonim ***** válasza:
100%

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();

2014. szept. 6. 14:20
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Köszönöm szépen!
2014. szept. 6. 22:07

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!