Rozdíl je považován za zanedbatelný.
Nicméně je třeba rozlišovat nativní připravená prohlášení z obecné myšlenky připraveného prohlášení.
První z nich je jen forma spouštění dotazů podporovaná většinou DBMS, vysvětleno zde
. Jeho použití může být zpochybněno.
To druhé je obecná myšlenka nahrazení skutečných dat zástupným symbolem, což znamená další zpracování nahrazených dat. Je široce používán v programování, dobře známý printf()
funkce je příkladem. A tento druhý přístup je třeba VŽDY použít ke spuštění dotazu na databázi , bez ohledu na to, zda je podložena nativními připravenými prohlášeními nebo ne. Protože:
- připravený příkaz umožňuje správné formátování (nebo manipulaci) nevyhnutelným .
- připravený příkaz provádí správné formátování (nebo manipulaci) na jediném správném místě - těsně před provedením dotazu, ne někde jinde, takže naše bezpečnost nebude spoléhat na tak nespolehlivé zdroje jako
- nějaká „magická“ funkce PHP, která data spíše kazí, než aby je zajistila.
- dobrá vůle jednoho (nebo více) programátorů, kteří se mohou rozhodnout naformátovat (či neformátovat) naši proměnnou někde v průběhu programu. To je velmi důležitý bod.
- připravený příkaz má vliv na samotnou hodnotu, která se zadává do dotazu, ale ne na zdrojovou proměnnou, která zůstává nedotčena a lze ji použít v dalším kódu (který má být odeslán e-mailem nebo zobrazen na obrazovce).
- připravený příkaz může výrazně zkrátit kód aplikace a provést veškeré formátování za scénou (*pouze pokud to ovladač dovolí).
Takže i když uvažujete o tom, že nepoužíváte nativní připravené příkazy (což je docela v pořádku), musíte své dotazy vždy vytvářet pomocí zástupných symbolů namísto skutečných dat. Pro tento účel můžete použít CHOP , který funguje přesně tak, jak je popsáno výše – ve výchozím nastavení pouze emulovat připravuje , znamená, že se z připraveného dotazu a dat vytvoří běžný SQL dotaz a poté se spustí proti databázi.
PDO však postrádá podporu pro mnoho důležitých datových typů, jako je identifikátor nebo pole – takže nemůžete vždy používat zástupné symboly, a proto je vkládání docela možné. Naštěstí safeMysql má zástupné symboly pro každý datový typ a umožňuje vám bezpečně spouštět dotazy.