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
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
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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0