array di mysqli -> query non raggiungimento dati corretti
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)
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?