Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pitag346

Undefined variable e function

Recommended Posts

Olá pessoal, estou com 2 pequenos problemas...



o seguinte:



tenho esse código:




f(isset($_SESSION['Username']) && isset($_SESSION['Password']))
{
$Sesion = "SELECT * FROM users WHERE username = '". $_SESSION['Username'] ."' AND password = '". md5($_SESSION['Password']) ."'";
$resultado = mysqli_query($mysqli,$Sesion);
if(mysqli_num_rows($resultado) > 0)
{
$myrow = mysqli_fetch_assoc($resultado);
define("Loged", TRUE);
}
}
else
{
define("Loged", FALSE);
}

após isso tenho esse código aqui:



$sq_ban = "SELECT * FROM bans WHERE value = '". $myrow['username'] ."' OR value = '". $myrow['ip_last'] ."'";

mas o php está me retornando:



Undefined variable: myrow




e tenho mais um probleminha



tenho a função:



function onlines(){
$sql = "SELECT * FROM users WHERE online = '1'";
$onlines = mysqli_query($mysqli,$sql);
$rowcount=mysqli_num_rows($onlines);
printf("%d Usuários conectados\n",$rowcount);
}

mas a função não está recebendo a conexão -> "$mysqli"



alguém poderia me explicar aonde está o erro por gentileza nesses 2 casos?



att.


Obrigado desde já!




Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso abaixo, você está tentando acessar uma variavel que simplesmente não existe no escopo daquela função.
Pois a função naquele momento tem escopo 'local', se você quer acessar uma variável de fora tem algumas opções.

function onlines(){
    $sql = "SELECT * FROM users WHERE online = '1'";
    $onlines = mysqli_query($mysqli,$sql);
    $rowcount=mysqli_num_rows($onlines);
    printf("%d Usuários conectados\n",$rowcount);
}

Usar o global

function onlines(){
    global $mysqli;
    $sql = "SELECT * FROM users WHERE online = '1'";
    $onlines = mysqli_query($mysqli,$sql);
    $rowcount=mysqli_num_rows($onlines);
    printf("%d Usuários conectados\n",$rowcount);
} 

Passar como parâmetro

function onlines($mysqli){
    $sql = "SELECT * FROM users WHERE online = '1'";
    $onlines = mysqli_query($mysqli,$sql);
    $rowcount=mysqli_num_rows($onlines);
    printf("%d Usuários conectados\n",$rowcount);
}  

Leitura de apoio:

http://php.net/manual/pt_BR/language.variables.scope.php

Sobre o Undefined, meu palpite seria alguma das opções abaixo:

1 - a consulta $Sesion não está retornando nada, ou nesse contexto seu de 'logo' abaixo se perde.

2- Case sensitive no banco?

De qualquer modo.

Execute um antes do "$sq_ban = "SELEC...."

var_dump($myrow);

E veja oq tem dentro :D

Abraço bons estudos

@dicaExtra:

Melhore a segurança do seu código utilizando uma 'sanitização' com o bind-param do Mysqli:

http://php.net/manual/pt_BR/mysqli-stmt.bind-param.php

Pois nunca é uma boa ideia passar direito parâmetros assim:

SELECT * FROM users WHERE username = '". $_SESSION['Username'] ."'

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por lezão
      Boa tarde, galera!
      Tudo bem com vcs?
       
      Estou precisando de uma limitador de palavras.
      Tenho um texto de 600 palavras e gostaria de que na pagina principal aparece se, apenas 30 palavras do texto.
      Achei esse codigo na innternet, mas ele não limita palavras, mas sim ele corta as palavras ficando assim:  "Tenho um texto de 600 palav..."
      ?php echo substr("$texto;", 0, 200); ? com uma variavel que limita as palavras ficaria assim: "Tenho um texto de 600 palavras". exibiria essas 6 palavras.
    • Por Luiz Henrique
      Olá pessoas,
       
      Tenho uma classe e dentro dela várias chamadas para métodos de acordo com a necessidade em outra classe (para obter dados DB), como são muitas e vou duplicar os arquivos, para ganhar tempo queria colocar o nome da classe em uma variável porém não funciona.
       
      use Class1; class Class2 { public $className = 'Class1'; ... $dados = $this->className::function(); // não funciona } Era para gerar isso:
      $dados = Class1::function();
      Se eu der um echo $this->$className, ele me retorno o nome da Class1 porém para executar um método dentro da Class1 não vai, diz que a classe Class1 não existe!
      Tem alguma forma de funcionar isso?
       
      Obrigado.
    • Por Boca
      Pessoas estou com uma duvida preciso de ajuda
      Tenho alguns campos chamados "horario_0, horario_1, horario_2, horario_3, horario_4, horario_5, horario_6 no meu banco de dados
      estou precisando que ela seja dinâmica dentro de um for
      exemplo:
       
      <?php for ($dia = 0; $dia < 7; $dia++): $resultadoBD->horario_$dia endfor; ?>  
    • Por SAS Junior
      Bom dia!
      Estou com uma dúvida, sou novo com sql, estou com um probleminha, todo dia preciso gerar lista de clientes pegar o id deles para fazer consulta posterior, como posso atribuir esses id's a uma variável e fazer a outra consulta por essa variável, é possível fazer isso? 
    • Por RickSilva
      Bom, preciso criar uma funçao que faz uma variavel string ter um valor durante um periodo de 5 segundos e depois outro valor durante os proximos 5 segundos, fazendo isso a todo momento. Por exemplo: Uma variavel cor que tenha como valor "preto" durante 5 segundos e depois receba o valor "branco".  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.