Domanda

Il mio mysqli_fetch_array(mysqi_query($db, $query)) non sembra essere sempre le informazioni corrette dal database, e di conseguenza, l'applicazione PHP non sta funzionando come dovrebbe.

Ecco le domande,

<?php
if($_GET){
$current = mysqli_fetch_array(mysqli_query($db, "SELECT * from `tbl_user` WHERE `userid` = '".$_GET['userid']."'"));
$currentperms  = mysqli_fetch_array(mysqli_query($db, "SELECT * from `tbl_perms` WHERE `userid` = '".$_GET['userid']."'"));
} 
?>

In concomitanza, il if ($current['userid'] == "1") {echo(" selected ");} non emetta nulla a tutti, quindi l'opzione corretta non è selezionata nel tag SELECT.

Così, dove: mi aspetto:     echo ($ currentperms [ 'newapp']); non uguale a 1, becuase è impostato così nel database, il cui risultato è "1". Ho verificare ciò riecheggiando la stringa di guadagnato. Newapp non è una colonna della tabella sia, quindi non dovrebbe essere tornando "1" come risultato.

Con questa:

 if $current['userid'] == "1") {
 echo(" selected ");
 }

Nulla è stato fatto eco, tuttavia, la variabile è stata utilizzata nello script in precedenza, e la cui uscita è "1".

Si prega di aiutare me, sto andando attraverso il tetto: |

@sasa: Uscita: Successo! Array ([0] => 1 [userid] => 1 [1] => shamil.nunhuck [username] => shamil.nunhuck [2] => Shamil Nunhuck [userfullname] => Shamil Nunhuck [3] = > shamil.nunhuck@localhost [useremail] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc [userpassword] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [livello di utente] => 1 [6] => Administrator [usertitle] = > Administrator [7] => 1 [TOS] => 1) Array ([0] => 1 [userid] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [UserCP] => 0 [3] => 0 [pm] => 0 [4] => 0 [errore] => 0 [5] => 0 [ABUG] => 0 [6] => 0 [AdminCP] => 0 [7] => 0 [intmgs] => 0 [8] => 0 [adduser] => 0 [9] => 0 [pass] => 0 [10] => 0 [USEREDIT] => 0 [ 11] => 0 [LISTUSER] => 0 [12] => 0 [newapp] => 0)

È stato utile?

Soluzione

Prova questo codice:

//  I put some echo for testing
if(!empty($_GET['id'])) {
    $id = (int)$_GET['id'];
    $sql = mysqli_query($db, "SELECT * from tbl_user WHERE userid = $id LIMIT 1");
    if(mysqli_affected_rows($db) == 0) {
        echo "There is no user with that id";
    } else {
        $current = mysql_fetch_assoc($sql);
        $currentperms  = mysql_fetch_assoc(mysqli_query($db, "SELECT * from tbl_perms WHERE userid = $id"));
        echo "Success!";
        // Or try to print result
        print_r($current);
        print_r($currentperms);
    }
} else {
    echo "There is no user id";
}

o forse solo un errore di sintassi:

  

Con questa:

 if $current['userid'] == "1") {
 echo(" selected ");
 }

Dovrebbe essere:

if($current['userid'] == 1) {
    echo(" selected ");
}

Altri suggerimenti

Se il problema è che il database è restituire informazioni errate è probabilmente meglio basta inviare la parte mysql del codice (esp. Query), i risultati attuali e quali risultati si aspettava di vedere.

anche FYI, spero che la tua analisi vostro $ _GET e $ _POST Vars prima di scaricarli in quella query. facendoli passare direttamente in SQL del genere non è una buona idea.

Non sono sicuro al 100% seguo la questione, ma sembrano essere dicendo che il risultato di $current['userid'] == "1" è falso, nonostante $current['userid'] stampa come "1", giusto?

Se questo è il caso, è possibile che ci sia qualche spazio o altra spazzatura entrare il valore che fa sì che il confronto a fallire, anche se dubito che sia il caso se userid viene generato automaticamente dal database.

È possibile verificare ciò in modo più approfondito l'ispezione il valore, per es.

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top