| 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: 11 let
|
|||
0