Questão de lógica - usando DIE em algumas situações

Enviada por Mauricio Cunha 
Mauricio Cunha
Questão de lógica - usando DIE em algumas situações
17 de November de 2003 às 07:50PM
Pessoal,

Lí muito a documentação do mySQL e do PHP, e ví muitos exemplos na Internet.

Em todos os exemplos quando um banco de dados não pode ser aberto eu uso DIE para fazer uma espécie de raise de um erro ocorrido.

Até aí tudo bem, porém quando se trabalha com consultas este gerenciamento se torna ineficiente. Por definição DIE() é um apelido para EXIT() e significa:

"exit -- Mostra uma mensagem e termina o script atual"

Ou seja, fecha todo meu script a partir do determinado momento em que é chamado, mas eu não quero isso, eu quero saber através de um recordcount ou eof (seja lá o que for) se houveram linhas de resultado, mas se uso uma chamada para num_rows ou fetched_rows, eu estou automaticamente entendendo que minha query ao mySQL deu certo (que faz com que eu volte no DIE()).

Qual a maneira correta de se resolver este impasse ?
Re: Questão de lógica - usando DIE em algumas situações
17 de November de 2003 às 08:07PM
Você está parcialmente correto.

DIE não é utilizado para retornos nulos no DB. É utilizado para retornos de erro na conexão com o DB

Se o PHP não conseguir estabelecer uma conexão válida com sua base de dados, ele se deslocará para a instrução DIE, evitando que o erro da conexão seja exibida na tela do usuário.

Se você quer fazer uma consulta e está preocupado com o EOF ou BOF do arquivo, apenas verifique se a variável de retorno esta vazia.

Você deve estar vindo dos microsofts da vida, né? Bem vindo ao futuro.

EOF e BOF's são agora coisas de quem desenvolve o Mysql e o PHP e não mais suas.
Brincadeirinha mas, pra quem programou em Fortran, isso é realmente um alívio.
Mauricio Cunha
Re: Questão de lógica - usando DIE em algumas situações
17 de November de 2003 às 08:28PM
Jayr,

Até onde eu lí sobre a documentação para verificar o status de um objeto/variavel usaria isset, então você quer dizer que devo fazer algo como:


$result = mysql_query("SELECT * FROM Tabela1 where Pais='ZX'")

if (!isset($result))
{
echo "Não há resultados para exibir";
}
else
{
echo "Exibindo registros...";
}
Marcelo Pereira
Re: Questão de lógica - usando DIE em algumas situações
17 de November de 2003 às 10:13PM
Olá pessoal, desculpem me meter no post :)

mas sobre o isset ele verifica que uma variável php está setada, isso não quer dizer que ela tem um valor, é legal tomar cuidado com isso, pois ja tive casos que a variável estava setada mas não tinha valor algum.. isso pode acontecer e lhe causar problemas espero ter ajudado
Mauricio Cunha
Re: Questão de lógica - usando DIE em algumas situações
17 de November de 2003 às 11:47PM
Marcelo,

Obrigado pelo comentário.
Mas e ai, como fazer o que o Jayr sugeriu ???
Marcelo Pereira
Re: Questão de lógica - usando DIE em algumas situações
18 de November de 2003 às 12:02AM
ah sim..

faz a verificação de conteudo

ao invés de if (isset($variavel))

use if ($variavel != "")
ou if ($variavel <> "") que é a mesma coisa

isso te ajuda em algo ?
Mauricio Cunha
Re: Questão de lógica - usando DIE em algumas situações
18 de November de 2003 às 12:27AM
Mesmo $result sendo um objeto funciona ???
Silvano Girardi Jr.
Re: Questão de lógica - usando DIE em algumas situações
18 de November de 2003 às 02:18AM
Pode usar o empty também:

$result = mysql_query("SELECT * FROM Tabela1 where Pais='ZX'");

if (isset($result) && !empty($result)) {
echo "Exibindo registros...";
} else {
echo "Nada pra exibir.";
}

[z]
Re: Questão de lógica - usando DIE em algumas situações
18 de November de 2003 às 05:30PM
Eu denovo.

Eu passei por problemas neste caso específico. Tentei ver o isset, o empty e, dependendo do resultado que cada pesquisa retornava, tinha um tipo de incorrência diferente.
A regra que adoto hoje é a seguinte:

Se vai retornar uma matriz:
Use SIZEOF(variavel). Foi a forma mais confiável.
If (sizeof($variavel)==0){...

Se vai retornar um literal ou numérico:
Use ! (not)
If (!$variavel) {...

Ou passe para a forma longa que consiste em testar a variável, saber seu tipo e testa-la.

Como vc mesmo que está criando o programa, fica fácil dirigir o resultado para um lado e direcionar o teste.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.