Jump to content


Photo

[Resolvido] Query Não Executa


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 dddidan

dddidan

    Ativo

  • Usuários
  • 381 posts
  • Sexo:Masculino
  • Localidade:Taboão da Serra - SP

Posted 18/09/2012, 08:47

Boa tarde galera!

Seguinte, tenho um script aqui que filtra uma pesquisa em banco de dados, nada muito impossivel, mas estou tendo problemas na execução da query que é montada pelo sistema.

Se eu pegar essa query e executar manualmente no banco de dados, os resultados são retornados normalmente, se eu colar a query diretamente na função que executa a query no php, também funciona, mas se eu deixar o php executar sozinho, não retorna resultado, apenas bool(true).

O código da geração de query (ainda vou trabalahr a parte de segurança dele):
<?php
$db = $GLOBALS['db'];
$time_start = microtime_float();
if ($_POST['email'] == -1 or $_POST['mala'] == -1) {
	echo "ISSO NON ECZISTE!";
} else {
	$tipos_selecionar = $_POST['permitir_tipo'];
	$tipos_nao_selecionar = $_POST['negar_tipo'];
	$bancos_selecionar = $_POST['permitir_banco'];
	$bancos_nao_selecionar = $_POST['negar_banco'];

	$query['geral'] = "	SELECT * FROM contato INNER JOIN contatoXbanco AS cxb ON cxb.id_contato = contato.idContato INNER JOIN contatoXtipo AS cxt ON cxt.id_contato = contato.idContato";

	$query['tipos_add'] = "";
	$query['tipos_nao_add'] = "";
	$query['bancos_add'] = "";
	$query['bancos_nao_add'] = "";

	
	if (!is_null($tipos_selecionar)) {
		$query['tipos_add'] = concatena($tipos_selecionar);
	}

	

	if (!is_null($tipos_nao_selecionar)) {
		$query['tipos_nao_add'] = concatena($tipos_nao_selecionar);
	}

	if (!is_null($bancos_selecionar)) {
		$query['bancos_add'] = concatena($bancos_selecionar);
	}

	if (!is_null($bancos_nao_selecionar)) {
		$query['bancos_nao_add'] = concatena($bancos_nao_selecionar);
	}

	$query['where'] = "";

	if ($query['tipos_add'] != "") {
		$query['where'][0] .= '( cxt.id_tipo IN  (' . $query['tipos_add'] . ' ) )';
	}
	if ($query['tipos_nao_add'] != "") {
		$query['where'][1] .= '( cxt.id_tipo NOT IN( ' . $query['tipos_nao_add'] . ' ) )';
	}
	if ($query['bancos_add'] != "") {
		$query['where'][2] .= '( cxb.id_banco IN( ' . $query['bancos_add'] . ' ) )';
	}
	if ($query['bancos_nao_add']!= "") {
		$query['where'][3] .= '( cxb.id_banco NOT IN( ' . $query['bancos_nao_add'] . ' ) )';
	}

	$where_declarado = false;
	$where = "";
	$preenchidos = 0;
	
	for ($i = 0; $i <= 3; $i++) {
		if ($query['where'][$i]!="") {
			if (!$where_declarado)
				$where .= 'WHERE ';
			if ($preenchidos == 0)
				$where .= $query['where'][$i];
			else
				$where .= ' AND ' . $query['where'][$i];
			$preenchidos++;
			$where_declarado = true;
		}
	}
	//var_dump($query);
	$final = $query['geral'] . ' ' . $where.';';
	//$final = str_replace('\n', '', $final);
	echo "<pre>".$final."<pre>";
	$db->mysqlStart(1);
		$res = $db->query($final, 1);
	$db->mysqlEnd(1);
	$_SESSION['novo_envio'] = $res;
	var_dump($res);
	?>
	<table>
		<tr>
			<td>Confirmar</td>
			<td>Nome</td>
			<td>Email</td>
		</tr>
		<?php
		for($i=0;$i<=count($res)-1;$i++){
			?>
			<tr>
				<td><input type="checkbox" value="<?php echo $res[$i]['idContato']; ?>" checked/></td>
				<td><?php echo $res[$i]['nome']; ?></td>
				<td><?php echo $res[$i]['email']; ?></td>
			</tr>
			<?php
		}
		?>
	</table>
	<?php
}
function concatena($var) {
	$aux = NULL;
	for ($i = 0; $i <= count($var) - 1; $i++) {
		if(!is_null($aux))
			$aux = $aux.','.$var[$i];
		else
			$aux = $var[$i];
	}

	return $aux;
}

function microtime_float() {
	list($usec, $sec) = explode(" ", microtime());
	return ((float)$usec + (float)$sec);
}
?>

<?php
$time_end = microtime_float();
	$time = $time_end - $time_start;
	echo "Gerado em ".number_format($time, 2, '.', '')."s <br />";
?>

Estou suspeitando de existir algum \r\n atrapalhando a execução (já enfrentei esse tipo de problema), mas não consegui localizar nada. Minha classe de banco de dados está ok, ja fiz vários testes e nada aconteceu de errado e como já disse, a query está funcionando. Alguma luz?

=========================================================================================

Edit:

Consegui resolver =]~

Se servir de ajuda para alguem, bastou colocar um trim() na query e funcionou perfeitamente :lol:

Edição feita por: dddidan, 18/09/2012, 08:48.

Mais vale um Dev C++ na mão do que dois codeblocks voando

PHP - ||||||||||||||| MySql - |||||||||||||||
C/C++ - ||||||||||||||| Oracle - |||||||||||||||
PERL - |||||||||||||||




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq