Nu-mi pot face logica să funcționeze în declarația mea

Am o declarație if și am probleme cu ea.

Trebuie să spunem:

Dacă câmpul de stamină este mai mare decât 0 atunci câmpul + exp, câmpul de aur, câmpul de rezistență face altceva

Am partea de lucru adăugând și luând departe câmpurile. Cu toate acestea, nu-l face în timp ce în această declarație dacă NU am pus-o în partea "face altceva". Cu toate acestea, nu se va opri la 0 când am pus-o în acea secțiune a instrucțiunii if.

<?php  

    include '../core/init.php';
    $id = $_SESSION['user_id'];
    $result = mysql_query('SELECT `stamina`FROM `characters` WHERE `id` = "$id"');
    $row = mysql_fetch_row($result);
    $stam = $row[0];

    if ($stam > 0) {
        mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10, `stamina`=`stamina`-1 WHERE id = "'.$id.'"');
    } else {

    }

?>

Conexiunea mea este "necesară" în init.php care funcționează complet bine.

Am încercat o mulțime de moduri diferite de a întoarce runda de ecuații.

Bine, acum am editat declarația și acum lucrează jumătate. Aici este:

<?php

    include '../core/init.php';
    $id = $_SESSION['user_id'];
    $stam = mysql_query('SELECT `stamina` FROM `characters` WHERE `id` = "$id"');

    if ($stam >= 1){
        mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10, `stamina`=`stamina`-1 WHERE id = "'.$id.'"');
    } else if ($stam < 1){

    }

?>

Noua problemă este că încă rulează interogarea în instrucțiunea if chiar dacă $ stam mai mică decât 1.

0
hi, sesiunea este deja creată, piesele din interiorul instrucțiunii funcționează perfect, cu excepția cazului în care se află în declarație, așa că im ghicit fie variabila mea care este greșită, fie afirmația mea că este întrebată incorect
adăugat autor joness123, sursa
Doar o pagină blanck, fără erori, am încercat și sau die()
adăugat autor joness123, sursa
haha mulțumesc moarteApril în cele din urmă ați cracat-o, stupid eu didnt vedea că la toate ¬.¬ multumesc din nou :)
adăugat autor joness123, sursa
apelați echo mysql_error (); după mysql_query și postați înapoi
adăugat autor Gntem, sursa
Ați sunat session_start() ?
adăugat autor Evan Mulawski, sursa
de ce nu puneți condiția în actualizare? P.S .: în cel de-al doilea exemplu, comparați un obiect cu un număr?
adăugat autor Aprillion, sursa

2 răspunsuri

Poate specificați că $ stam este un integer ? Încerca:

if ((int)$stam >= 1 ){
0
adăugat
multumesc pentru asta, dar inca nu aveti noroc, totusi merge sub 0, multumesc :)
adăugat autor joness123, sursa
mulțumesc re-a scris codul meu la ceea ce a fost și a inclus tot în toate răspunsurile și acum pare să funcționeze, multumesc mult :)
adăugat autor joness123, sursa
Încercați echo sau print_r $ stam și asigurați-vă că este ceea ce credeți că este, code> este un mysql_query . De asemenea, ați putea folosi preg_match în loc de > = 1 pentru a reveni la true dacă $ stam este un număr de 1,2 sau 3 cifre $ stam este orice altceva decât un număr de 3 cifre mai mare de 0, cum ar fi dacă (preg_match ('/ ^ [1-9] {1} [0-9] $/', $ stam)) {
adăugat autor Overchill, sursa

Încerca:

$result = mysql_query('SELECT `stamina` FROM `characters` WHERE `id` = ' . $id);

if ($result['stamina'] >= 1){
mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10,                      
    `stamina`=`stamina`-1 WHERE id = ' . $id);
} else if ($result['stamina'] < 1){
}

Although you should look into the new mysqli_* functions. http://php.net/manual/en/book.mysqli.php

EDIT: I just realized another issue. In your first query you have the $id variable contained within the single quotes.

0
adăugat
Bună, cred că ar fi putut să-mi fie rău copierea mea rău, și acest cod nu face nimic, cu toate acestea, dacă mișc interogarea în interiorul instrucțiunii if la secțiunea else dacă se execută interogarea, dar doesnt stop la 0, aceasta este cam ciudat??
adăugat autor joness123, sursa
reparat finnaly am fost arătând $ ca Stam obiect în loc de un întreg așa cum a spus deathApril, multumesc pentru ajutor a fost foarte util :)
adăugat autor joness123, sursa
Cred că valoarea dvs. de rezistență nu este citită ca un număr întreg. Echo afară totul pentru a vedea unde se întâmplă eroarea. De exemplu, $ sql = 'SELECT stamina din caractere WHERE id ='. $ Id; echo $ sql; $ rezultat = mysql_query ($ sql); echo $ result ['stamina'];
adăugat autor Jared, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT