Topic: užklausos klaida

noriu padaryt paprasčiausia funkcija kad patikrintu ar vartotojas jau yra duomenu bazeje, padariau taip

function username_valid($a){
    $result = mysql_query("SELECT * FROM users WHERE username = '$a'",$con);
    $num_rows = mysql_num_rows($result);
    if($num_rows == 1 ){
    echo 'Vartotojo vardas jau egzistuoja!';
    }
}

Ir tada meta tokias klaidas

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/u804165652/public_html/web/db.php on line 17

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u804165652/public_html/web/db.php on line 18

o jai padarau ne funkcijoje, o paprastai tai jau veikia, niekaip nesuprantu kame kampas

2 (edited by md5 2011-11-10 20:34:39)

Re: užklausos klaida

#f-jose visi kintamieji iš išorės (tavo atveju $con) pasiekiami tik su raktažodžiu "global", arba perduodant kaip argumentą,
tas negalioja tik superglobal'ams $_SESSION, $_POST....#

#pavadinimai turi būti logiški ir atitinkantys prasmę, valid() gali reikšti belenką.

function username_exists($username) {
    global $con; #čia šitas kintamasis pasiekiamas iš išorės su global keywordu

    $username = mysql_real_escape_string($username, $con); #pasiskaitom kas per f-ja
    $result = mysql_query("SELECT * FROM users WHERE username = '$username'", $con) or die(mysql_error($con)); #pasiskaitom kas per f-ja
    $num_rows = mysql_num_rows($result);
    mysql_free_result($result); #pasiskaitom kas per f-ja
    if ($num_rows == 1) {
        #f-jose draudžiama naudoti "echo, print", f-ja turi gražinti rezultatą
        return true;
    }
    return false;
}
# štai tokiu būdu reikia tikrinti,
if (username_exists('asdf')) {
    echo "toks vartotojas jau egzistuoja";
}

global reikia naudoti protingai!!!!!!!!!! nes kur nors pakeitus į $con = 'abc' siugrius logika.

Kiek maigyklių sudėvėjai ?

Re: užklausos klaida

dekui

Re: užklausos klaida

Arba išvis gali $con nedėt.. Užtenka būt prisijungus prie duombazės ir mysql_query veiks.

Re: užklausos klaida

neturiuVardo wrote:

Arba išvis gali $con nedėt.. Užtenka būt prisijungus prie duombazės ir mysql_query veiks.

O jei vienu metu reikia tureti connectionu su keliais db serveriais? :)
Siaip del bendros kulturos reiktu visuomet nurodyti connectiona.

O siaip teisiga praktika yra su db dirbti per wraperi, sito nauda supranti kai tenka dirbti su dideliais projektais.