Question

mon mysqli_fetch_array(mysqi_query($db, $query)) ne semble pas obtenir les informations correctes à partir de la base de données, et par conséquent, l'application PHP ne fonctionne pas comme il se doit.

Voici les requêtes,

<?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']."'"));
} 
?>

En même temps, le if ($current['userid'] == "1") {echo(" selected ");} ne rien fournir en sortie du tout, donc l'option correcte est pas sélectionnée dans la balise SELECT.

Alors, où: je pense:     echo ($ currentperms [ 'newapp']); ne pas être égale à 1, cela parce qu'elle est réglée de manière à la base de données, dont le résultat est « 1 ». J'ai tester en faisant écho à la chaîne gagné. Newapp n'est pas une colonne dans la table non plus, donc il ne devrait pas être de retour « 1 » en conséquence.

Avec ceci:

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

Rien est fait l'écho, cependant, la variable a été utilisée dans le script précédent, et dont la sortie est « 1 ».

S'il vous plaît aidez-moi, je vais à travers le toit: |

@sasa: sortie: Succès! Array ([0] => 1 [userid] => 1 [1] => shamil.nunhuck [nom d'utilisateur] => shamil.nunhuck [2] => Shamil Nunhuck [userfullname] => Shamil Nunhuck [3] = > shamil.nunhuck@localhost [useremail] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc [userpassword] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [userlevel] => 1 [6] => Administrator [usertitle] = > Administrator [7] => 1 [tos] => 1) Array ([0] => 1 [userid] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [UserCP] => 0 [3] => 0 [h] => 0 [4] => 0 [bug] => 0 [5] => 0 [ABUG] => 0 [6] => 0 [admincp] => 0 [7] => 0 [intmgs] => 0 [8] => 0 [adduser] => 0 [9] => 0 [passer] => 0 [10] => 0 [USEREDIT] => 0 [ 11] => 0 [LISTUSER] => 0 [12] => 0 [newapp] => 0)

Était-ce utile?

La solution

Essayez ce code:

//  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";
}

ou peut-être juste une erreur de syntaxe:

  

Avec ceci:

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

Il devrait être:

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

Autres conseils

Si le problème est que la base de données est de retour des informations incorrectes, il est préférable que vous probablement juste après la partie mysql du code (en particulier. La requête), les résultats actuels et les résultats que vous attend à voir.

aussi FYI, j'espère que votre analyse de votre _GET et $ _POST vars avant de les jeter dans cette requête. les faisant passer directement dans le SQL comme ça n'est pas une bonne idée.

Je ne suis pas 100% sûr que je suis la question, mais vous semblez dire que le résultat de $current['userid'] == "1" est faux, en dépit de l'impression $current['userid'] comme « 1 », correct?

Si tel est le cas, il est possible, il y a quelques espaces ou autres cochonneries entrer dans la valeur qui provoque la comparaison à l'échec, même si je doute que ce soit le cas si userid est généré automatiquement par la base de données.

Vous pouvez le vérifier en examinant plus à fond la valeur, par exemple.

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top