variedade mysqli -> consulta não alcançar dados corretos
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)
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?