Autor Zpráva
jefitto44
Profil
$sel="SELECT * FROM translator WHERE label='".$label."'";
Toto je na SQL injection ako stvorené... ako sa to dá ošetriť? mysqli_real_escape_string sa mi akosi nechce používať, prepared statements zas nefungujú... metódu mysqli->prepare() z manualu PHP som akosi nepochopil...
juriad
Profil
Je to pěkně popsáno tady:
http://www.fisir.tk/itblog/mysql_

V dotazu v metodě prepare prostě místo hodnot napíšeš otazníky a pak zavoláš bind_param tolikrát, kolik máš v dotazu otazníků.
lionel messi
Profil
jefitto44:
mysqli_real_escape_string sa mi akosi nechce používať
Práve toto je funkcia vhodná na escapovanie. Jej slabinou však je, že na takéto ošetrenie možno zabudnúť.

metódu mysqli->prepare() z manualu PHP som akosi nepochopil...
Český návod www.fisir.tk/itblog/mysql_#prepared-statements si čítal?

Môžeš použiť taktiež niektoré hotové riešenia, napr. dibi.
jefitto44
Profil
V mojom prípade by to teda vyzeralo takto?
$db je premenná s mysqli_connect
$sel="SELECT * FROM translator WHERE label=(?)";
$db->prepare($sel);
$db->bind_param("s", $premennaSDanouHodnotou);

a $db->query($sel) netreba tým pádom?
juriad
Profil
$sel = "SELECT * FROM translator WHERE label=?";
$query = $db->prepare($sel); // může vrátit FALSE, pokud je v dotazu chyba
$query->bind_param("s", $premennaSDanouHodnotou);
$query->execute(); // vrací TRUE / FALSE
$data = $query->get_result(); // může vrátit FALSE
$radek = $query->fetch_assoc(); // vrací FALSE, pokud žádný další řádek není
Měl jsem tam chybu - chyběla mi metoda get_result()
jefitto44
Profil
Ešte jedna otázka, ako bude server vedieť, že ktorý bindnutý param má kde zaradiť? Musím dodržiavať poradie?
lionel messi
Profil
jefitto44:
Ešte jedna otázka, ako bude server vedieť, že ktorý bindnutý param má kde zaradiť? Musím dodržiavať poradie?
Práve poradie bude pre server rozhodujúce, čiže áno.

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: