Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
Zdravím,
zajímám se o možnosti prepared statements v mysqli a zajímá mne, zda-li když si napíšu vlastní metodu pro ošetření vstupů, v čem bude využití mysqli konstrukcí lepší/horší/stejné? Mají prepared statements v mysqli za úkol ještě jiné věci, než jen ošetření vstupů? Vlastní metoda by mohla vypadat nějak takto: function query($query, ...$params) { foreach($params as $key => $param) { $query = str_replace("?" . $key, saveInput($param), $query); } $result = $mysqli->query($query); return $result->fetch_assoc(); } function saveInput($value) { return $mysqli->real_escape_string(htmlspecialchars($value)); } var_dump(query("SELECT * FROM my_table WHERE name LIKE '?0' AND show = '?1'", "name", "yes")); |
||
Keeehi Profil |
#2 · Zasláno: 28. 3. 2015, 21:54:06
Sylar:
„Mají prepared statements v mysqli za úkol ještě jiné věci, než jen ošetření vstupů?“ A manuál jsi četl? Na konci je srovnávací tabulka. + Mám pocit, že nad prepare statements se dají zapnout optimalizace dotazů. |
||
Jan Tvrdík Profil |
#3 · Zasláno: 29. 3. 2015, 22:06:59
Sylar:
• Tvůj kód selže, pokud některý z parametrů bude obsahovat podřetězec ?param .
• Volat na všechny vstupy automaticky htmlspecialchars je blbost.
• Tvůj kód bude za normálních okolností rychlejší, než prepared statements. • Tvůj kód stejně jako prepared statements nepodporuje escapování polí, identifikátorů a dalších spousty dalších věcí. Proč nepoužiješ radši nějakou hotovou knihovnu? |
||
Časová prodleva: 9 let
|
0