Avatar
pardal486
Člen
Avatar
pardal486:

Zdravím. Právě se snažím udělat funkční php web, ale při registraci nastal problém. Chci zjisti jestli už zadané jméno není v databázi, ale vůbec nevím jak to udělat v pdo. Např. tento skript:

function prezdivkavdb ($prezdivka, $link)
{
    $vysledek=mysql_query("select * from uzivatele where prezdivka='".$prezdivka."'", $link);
    return (boolean) mysql_num_rows($vysledek);
}

přepsat do funkční pdo podoby. Zkoušel jsem to, ale když uživatel existoval, tak to vrátilo true a když ne tak to nevrátilo nic. Můžete mi poradit jak to udělat? :(

Odpovědět 13.4.2013 13:52
Bite my shiny, metal ass!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pardal486
David Čápka:

Ale fuj, proč vybíráš všechny sloupce, když tě zajímá jen počet řádků v tabulce? Navíc tam máš SQL injekci.

Tohle by mělo fungovat, ale ten zastaralý MySQL ovladač již nepoužívám, on se vlastně už ani používat nemá.

function prezdivkavdb($prezdivka, $link)
{
    $vysledek=mysql_query("select COUNT(*) from uzivatele where prezdivka='".mysql_real_escape_string($prezdivka)."'", $link);
    return mysql_fetch_row($vysledek);
}

Doporučuji si projet tento seriál: http://www.itnetwork.cz/…ze-tutorialy

Pro práci s databází si stáhni českou knihovnu dibi: http://dibiphp.com/

Nahoru Odpovědět 13.4.2013 13:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
pardal486
Člen
Avatar
pardal486:

Ještě bych mohl dodat že můj kód na zjištění je tento:

function nickInDB ($nick) {
        private $veri=$news->query("SELECT * FROM users WHERE nick='".$nick."'");
        private $ov=(boolean)$veri->fetchColumn();
        if ($ov==null) return false;
        else return true;
    }
Nahoru Odpovědět 13.4.2013 13:57
Bite my shiny, metal ass!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pardal486
David Čápka:

Stejná chyba, takhle si zadám do nicku SQL příkaz a vymažu ti celou databázi.

Nahoru Odpovědět 13.4.2013 13:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
pardal486
Člen
Avatar
Odpovídá na David Čápka
pardal486:

Ono to funguje (je to fuknce z linuxsoft.cz :D ), ale já to potřebuji v pdo.

Nahoru Odpovědět 13.4.2013 13:58
Bite my shiny, metal ass!
Avatar
pardal486
Člen
Avatar
Odpovídá na David Čápka
pardal486:

sql injection vyřeším potom. Teď mě zajímá jen to zjištění

Nahoru Odpovědět 13.4.2013 13:59
Bite my shiny, metal ass!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pardal486
David Čápka:

Nevěřím tomu, že se tohle někde učí, hlavně na linuxsoftu, to sis špatně interpretoval. A nefunguje to, protože ti mohu smazat celou DB, tak to asi fungovat nemá. Pokud používáš PDO, nauč se pracovat s parametrizovanými dotazy.

Nahoru Odpovědět 13.4.2013 14:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na pardal486
Petr Nymsa:

S databázemi a php taky teď bojuju a když to chceš v pdo (což se taky učím) tak se mrkni sem http://www.itnetwork.cz/…-a-modularne a použití v praxi

SELECT * FROM uzivatele WHERE prezdivka = ?

za dotazník se vloží tvůj parametr

Editováno 13.4.2013 14:04
Nahoru Odpovědět 13.4.2013 14:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.