Mistério na query: No aplicativo não roda, mas direto no SQL do BD está 100%.

SQL

12/04/2018

Bom dia pessoal!

Bem, tenho a seguinte query que roda direitinho direto no BD:

SELECT * FROM grupos, clientes, eventos WHERE gp_id = 9 AND clt_id = 10 AND gp_id_resp = 10 AND evento_id = 5



Já a query abaixo, que está na aplicação, não retorna valor algum:

SELECT *
FROM grupos, clientes, eventos
WHERE gp_id = idGrupo  AND clt_id = idCliente AND gp_id_resp = idCliente AND evento_id = idEvento



Sendo, as 2 de mesma sintaxe, por que não consigo fazer rodar na aplicação? Onde está o erro!?

Obrigado desde já!
Myller Meireles

Myller Meireles

Curtidas 0

Respostas

Myller Meireles

Myller Meireles

12/04/2018

Complementando:

Esse é o código que está na aplicação:

$idEvento_Listar_Grupos = "-1";
if (isset($_GET['evento_id'])) {
  $idEvento_Listar_Grupos = $_GET['evento_id'];
}
$idGrupo_Listar_Grupos = "-1";
if (isset($_GET['gp_id'])) {
  $idGrupo_Listar_Grupos = $_GET['gp_id'];
}
$idCliente_Listar_Grupos = "-1";
if (isset($_GET['clt_id'])) {
  $idCliente_Listar_Grupos = $_GET['clt_id'];
}
mysql_select_db($database_cnx_crosstai, $cnx_crosstai);
$query_Listar_Grupos = sprintf("SELECT * FROM grupos, clientes, eventos WHERE gp_id = %s  AND clt_id = %s AND gp_id_resp = %s AND evento_id = %s", GetSQLValueString($idGrupo_Listar_Grupos, "int"),GetSQLValueString($idCliente_Listar_Grupos, "int"),GetSQLValueString($idCliente_Listar_Grupos, "int"),GetSQLValueString($idEvento_Listar_Grupos, "int"));
$Listar_Grupos = mysql_query($query_Listar_Grupos, $cnx_crosstai) or die(mysql_error());
$row_Listar_Grupos = mysql_fetch_assoc($Listar_Grupos);
$totalRows_Listar_Grupos = mysql_num_rows($Listar_Grupos);
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/04/2018

não sei como o mysql se comporta, mas no primeiro exemplo (diretamente no banco) você está passando todos os valores como numérico:
SELECT * FROM grupos, clientes, eventos WHERE gp_id = 9 AND clt_id = 10 AND gp_id_resp = 10 AND evento_id = 5


e na execução do programa os passa como string, provavelmente o retorno do comando deve ser:
SELECT * FROM grupos, clientes, eventos WHERE gp_id = '9' AND clt_id = '10' AND gp_id_resp = '10' AND evento_id = '5'


não será esse o problema?

GOSTEI 0
Myller Meireles

Myller Meireles

12/04/2018

Emerson,

Obrigado por responder!

Tentei resolver o caso com tua dica... alterei na função "sprintf" da query a formatação dos caracteres... aonde tinha "%s" (onde o "s" refere-se a string) coloquei "%d" (onde o "d" refere-se a valor inteiro tipo int), mas mesmo assim não rodou! ;-(
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/04/2018

vi um exemplo na internet que usa %u pra um caso parecido com o teu. troque o %d por %u e veja se funciona.
GOSTEI 0
Myller Meireles

Myller Meireles

12/04/2018

Emerson,

Não rolou, com o "%u"! Na dúvida, acho que vou testar com todo o abecedário... hehehehe
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/04/2018

antes de executar a query pelo programa, exiba o conteúdo de $query_Listar_Grupos e execute-o diretamente no banco. Talvez a query esteja sendo gerada com algum problema.
GOSTEI 0
Willian Silva

Willian Silva

12/04/2018

Bom dia, Myller Meireles vou pedi três verificação sua,

1- Os três campos que estão vindo como get, estão vindo preenchidos? pos caso não venha eu verifiquei que vai o valor -1 assim imagino que na base não exista o cadastro com ID = -1

2 - Caso os três campos esteja vindo preenchidos no get, por favor poderia da um $query_Listar_Grupos var_damp ou um print na tela do sql para verificar se a construção do sql esteja direito.

3 - Verifiquei no teu codigo que você está usando a estrutura de consulta de base antiga caso use php com mysql talvez poderia rever e fazer o mesmo exemplo usando talvez uma conexão PDO para teste já que o sql que você tem na aplicação executa normalmente no teu bando de dados (mysql_query).

OBS: uma ajudinha que poderia usa é coloca um try catch nesse trecho de código, e assim que rodar vai mostra caso tenha algum erro de mysql ou de sql ou de código msm.

https://www.devmedia.com.br/blocos-try-catch/7339 -> é de java mais a estrutura do try catch é igual para todas as linguagens.
GOSTEI 0
POSTAR