Ir para conteúdo

POWERED BY:

Arquivado

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

azeredo

verificar um query.... que modo é mais correto?

Recommended Posts

Pessoal, minha dúvida é o seguinte...

 

Tenho isso

$sql = "select * from tabela where campo = var";$consulta_sql = ibase_query($conexao, $sql);$linha = ibase_fetch_object($consulta);

mas quero verificar se essa sql existe... então as vezes faço:

 

if ($consulta = true) {...} //e as vezesif ($linha = true){...}

Falo as vezes, porque ora funciona com um ora com outro.... então minha dúvida é qual o correto (acho q nenhum.. eheh) ou qual a forma mais correta desta verificação?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer saber se trouxe alguma resutado?

 

use:

$testa = $_POST['variavel_do_formulario'];		$verifica= "SELECT nomeDaColunaNoBD FROM cliente WHERE campoDaTabela='".$testa."'";	$testador = mysql_query($verifica);	$temp = mysql_fetch_assoc($testador);	if($temp['variavel_que_veio_da_tabela']!=null)	{		  // se for diferente de null faça tal coisa	 } echo {			// faça isso	}

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que no caso.. a sql acima é assim

 

$sql_existenota = "select * from notas where matricula = $linha->MATRICULA and materia = $materia and avaliacao =						   $avaliacao and filial = $filial";

queria verificar se tem algum resultado sabe... tipo, achou algo na tabela com esse sql? para assim determinar o que irá fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que é diferente do mysql que existe a função mysql_num_row() para saber se trouxe resultados, mas preste atenção

 

Executa uma consulta em um banco de dados InterBase. Se houver um erro na consulta, retorna FALSE. Se ela for bem sucedida e houver um conjunto de resultados (possivelmente vazio), como o retornado por uma consulta SELECT, retorna um identificador de resultado. Se a consulta for bem sucedida e não houver resultado, retorna TRUE.

 

entao basta testar se retornou true para ver se teve sucesso , mas depois testar se é um identificador de resultados use get_resource_type

 

http://br.php.net/manual/pt_BR/function.ge...source-type.php

 

ou use is_object():

 

http://br.php.net/manual/pt_BR/function.is-object.php

http://br.php.net/manual/pt_BR/function.var-dump.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo.. ali "Executa uma consulta em um banco de dados InterBase....." o que tem antes deste texto?O que que executa uma consulta, é o ibase_query mesmo daí né?Se for, neste caso, verifico com if ($consulta = true) { Estou certo?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br2.php.net/manual/pt_BR/function.i...-free-query.php

http://br2.php.net/ibase

 

e o operador de comparador é "==" e identico "==="

 

http://br2.php.net/manual/pt_BR/language.o....comparison.php

 

 

$consulta_sql = ibase_query($conexao, $sql);

$linha = ibase_fetch_object($consulta);

 

if ($consulta) {

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vi no manual do php que tem o comando ibase_num_fieldsObtém o número de campos em um conjunto de resultadosEntão será que posso verificar se tem algum campo, para ver se encontrou algo na tabela....Desculpa pergunta, mas é que não estou podendo testar isso tudo agora, por não estar disponível o servidor para os testes...Valeu a todosEdit.: não tinha visto os posts acima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos,

 

Bom, o if($consulta) { funciona perfeitamente, mas neste código que fiz aqui... é como se ignorasse...

$sql_existenota = "select * from notas where matricula = $linha->MATRICULA and materia = $materia and avaliacao =						   $avaliacao and filial = $filial";		$consulta_existe = ibase_query($conexao, $sql_existenota);		if ($consulta_existe)		{			$linha_existe = ibase_fetch_object($consulta_existe);			$sql_alteranota = "update notas set nota = $nota, falta = $falta where codigo = $linha_existe->CODIGO";			$altera_nota = ibase_query($conexao, $sql_alteranota);					}				else		{				$sql_lancar = "insert into notas (codigo, filial, matricula, materia, avaliacao, nota, falta, aulasbimestrais) values						   ($cod, $filial, $linha->MATRICULA, $materia, $avaliacao, '$nota', $falta, 30)";			$lançar = ibase_query($conexao, $sql_lancar);			 					}

Mesmo quando lanço uma nota em uma avaliação que ainda não tem, parace que ele ainda passa aqui

$linha_existe = ibase_fetch_object($consulta_existe);			$sql_alteranota = "update notas set nota = $nota, falta = $falta where codigo = $linha_existe->CODIGO";			$altera_nota = ibase_query($conexao, $sql_alteranota);

Pois está dando esse erro

 

Warning: ibase_query(): Dynamic SQL Error SQL error code = -104 Unexpected end of command in /var/www/apache2-default/www.maxximus.com.br/maxescola/teste/lancado.php on line 37

 

que é a linha $altera_nota = ibase_query($conexao, $sql_alteranota);

 

Não consegui ver o porque está dando esse erro, pois com esse mesmo comando no IbExpert o sql faz corretamente no banco de dados.

 

Todos os campos ali listados são integer

 

Essa mensagem aparece tanto quando lança uma nota nota, quanto vou alterar uma nota já lançada...

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

já tinha tentado assim, mas a mensagem é a mesma...Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem abusar, mas já abusando....mais alguma ajuda?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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