Mistério na query: No aplicativo não roda, mas direto no SQL do BD está 100%.
Bom dia pessoal!
Bem, tenho a seguinte query que roda direitinho direto no BD:
Já a query abaixo, que está na aplicação, não retorna valor algum:
Sendo, as 2 de mesma sintaxe, por que não consigo fazer rodar na aplicação? Onde está o erro!?
Obrigado desde já!
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
Curtidas 0
Respostas
Myller Meireles
12/04/2018
Complementando:
Esse é o código que está na aplicação:
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
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:
e na execução do programa os passa como string, provavelmente o retorno do comando deve ser:
não será esse o problema?
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
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! ;-(
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
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
12/04/2018
Emerson,
Não rolou, com o "%u"! Na dúvida, acho que vou testar com todo o abecedário... hehehehe
Não rolou, com o "%u"! Na dúvida, acho que vou testar com todo o abecedário... hehehehe
GOSTEI 0
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
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.
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