Avatar
pardal486
Člen
Avatar
pardal486:13.4.2013 13:52

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:13.4.2013 13:56

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:13.4.2013 13:57

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:13.4.2013 13:58

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:13.4.2013 13:58

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:13.4.2013 13:59

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:13.4.2013 14:00

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:13.4.2013 14:04

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.