Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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 Hartinger
Vlastník
Avatar
Odpovídá na pardal486
David Hartinger: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
You are the greatest project you will ever work on.
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 Hartinger
Vlastník
Avatar
Odpovídá na pardal486
David Hartinger: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
You are the greatest project you will ever work on.
Avatar
pardal486
Člen
Avatar
Odpovídá na David Hartinger
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 Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na pardal486
David Hartinger: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
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
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.