sql >> Databáze >  >> RDS >> Mysql

Rozdíl mezi PDO->query() a PDO->exec()

Navzdory jakémukoli teoretickému rozdílu by žádná z těchto funkcí stejně neměla být používána – takže se není čeho obávat.

Jediným důvodem použití PDO je podpora připravených výpisů , ale žádná z těchto funkcí to nenabízí. Neměly by se tedy používat.

Použijte prepare()/execute() místo toho zejména pro příkazy UPDATE,INSERT,DELETE.

Vezměte prosím na vědomí, že ačkoli jsou připravená prohlášení široce inzerována jako bezpečnostní opatření, slouží pouze k upoutání pozornosti lidí. Ale jejich skutečný účelem je správné formátování dotazu . Což vám také poskytuje bezpečnost - protože správně naformátovaný dotaz nelze vložit tak dobře - stejně jako vedlejší efekt. Ale znovu – formátování je primárním cílem, protože i nevinná data mohou způsobit chybu v dotazu, pokud nejsou správně naformátována.

EDIT:Všimněte si prosím, že execute() vrátí pouze TRUE nebo FALSE k označení úspěchu operace. Pro další informace, jako je počet záznamů ovlivněných UPDATE , metody jako rowCount() jsou poskytovány. Viz dokumenty .



  1. Jak získat pouze první řádek z ResultSet

  2. Mysql:Proveďte NOT EXISTS. Je možné zlepšit výkon?

  3. Jak přesně fungují dotazy na databázi PHP/MySQL?

  4. Špičkové techniky, jak se vyhnout „odstranění dat“ z databáze webových stránek