Pergunta

minha mysqli_fetch_array(mysqi_query($db, $query)) não parece estar recebendo as informações corretas do banco de dados e, portanto, a aplicação PHP não está funcionando como deveria.

Aqui estão as consultas,

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

Ao mesmo tempo, o if ($current['userid'] == "1") {echo(" selected ");} não está emitindo alguma coisa, então a opção correta não for selecionado na tag SELECT.

Então, onde: eu esperaria: echo ($ currentperms [ 'newapp']); não igual a 1, becuase é estabelecido de modo na base de dados, o resultado de que é "1". Tenho testar isso ecoando a corda adquirida. Newapp não é uma coluna na tabela, quer, por isso não deve voltar "1" como resultado.

Com este:

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

Nada está sendo ecoado, no entanto, a variável tem sido usado no script antes, e cuja saída é "1".

Por favor me ajude, eu vou através do telhado: |

@sasa: Saída: Sucesso! Array ([0] => 1 [ID do usuário] => 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 [userlevel] => 1 [6] => Administrador [usertitle] = > Administrador [7] => 1 [tos] => 1) array ([0] => 1 [idutilizador] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [usercp] => 0 [3] => 0 [pm] => 0 [4] => 0 [erro] => 0 [5] => 0 [ABUG] => 0 [6] => 0 [AdminCP] => 0 [7] => 0 [intmgs] => 0 [8] => 0 [adduser] => 0 [9] => 0 [passar] => 0 [10] => 0 [USEREDIT] => 0 [ 11] => 0 [LISTUSER] => 0 [12] => 0 [newapp] => 0)

Foi útil?

Solução

Tente este código:

//  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 talvez apenas um erro de sintaxe:

Com este:

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

Ele deve ser:

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

Outras dicas

Se o problema é que o banco de dados está retornando informações incorretas é provavelmente o melhor que você acabou de postar a parte mysql do código (esp. A consulta), os resultados atuais e quais os resultados que esperava ver.

Também fyi, espero que sua análise o $ _GET e $ _POST vars antes de despejá-los para essa consulta. Passá-los diretamente para o SQL como essa não é uma boa idéia.

Eu não estou 100% certo que eu siga a pergunta, mas você parece estar dizendo que o resultado de $current['userid'] == "1" é falsa, apesar $current['userid'] imprimir como "1", correto?

Se for esse o caso, é possível que haja algum espaço em branco ou outro junk metendo o valor que faz com que a comparação falhar, embora eu duvido que é o caso se userid é auto-gerado pelo banco de dados.

Você pode verificar isso inspecionando mais profundamente o valor, por exemplo.

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top