Autor Zpráva
Davee
Profil *
Dobrý večer, mám kód na získávání dalšího pořadovanýho ID
$qShowStatus = "SHOW TABLE STATUS LIKE 'users'";
$qShowStatusResult = mysql_query($qShowStatus);
while ($row_zjisti = mysql_fetch_assoc($qShowStatusResult)) {
$pocet = $row_zjisti['Auto_increment'];
} 

jak lze toto sepsat pomocí DIBI? Klasický (count+1) nemůžu použít, protože, když nějaký záznam smažu, bude to počítat blbě


Pak bych se chtěl zeptat, když vkládám/upravuju data, jak je nejlépe zabezpečit proti všem "škůdcům", jako sql injection, escapování apod? Dibi to řeší samo?

$updateValues = array(
    'jmeno' => $_POST["jmeno"],
    'prijmeni' => $_POST["prijmeni"],
    'admin' => $_POST["admin"],
    'email' => $_POST["email"],
);
$zapis = dibi::update('users', $updateValues)->where('id = %s', $_GET['upravit'])->execute();
Alphard
Profil
První otázku nechápu, k čemu vám to je? Pro další dotaz to stejně použít nejde, není to atomické. Při práci s auto_increment by měl být prvně proveden základní insert, pak může být získáno jeho id (viz metoda insertId()) a dále použito.

Univerzální escapování neexistuje, ale pro kontext databáze (té konkrétní zvolené) si dibi parametrické vstupy ošetří samo.
Davee
Profil *
Alphard:
díky metoda insertId() je přesně ono

Takže tak jak to mám, je dobře? Nemusím nijak ošetřovat např znaky: ', ", <b>text</b>, <script>.....
Alphard
Profil
Kvůli databázi ne.

Dále záleží, co s tím obsahem chcete dělat. Jestli se nemá interpretovat jako html v kontextu html, je třeba převést ho na entity (nebo úplně smazat). To je ale lepší dělat až při výpisu na konkrétním místě (je to návrhově čistší, ale sežere to trošičku víc výkonu). Nejlepší je nechat to na nějakém šablonovacím systému, třeba Latte.

Viz Escapování - definitivní příručka » phpFashion.

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