Ir para conteúdo

POWERED BY:

Arquivado

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

dinhotaswolf

Variavel retorna vazia no execução do SQL

Recommended Posts

Olá pessoal!

 

Estou com problema no código abaixo:

include 'access_db.php';

$query = "INSERT INTO clientes (tel, obs, condicao) VALUES ('$_GET[tel]','$_POST[obs]','$_POST[condicao]')";
mysql_query($query);

$query = "SELECT MAX(id) FROM clientes WHERE tel = '$_GET[tel]'";
$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$busca = mysql_fetch_array($result);

echo "<script>alert('Cadastro realizado com sucesso !!!');</script>";
echo "<script>alert('Informe protocolo de cadastro número: ".$busca['id']."');</script>";
echo "<script>window.location='princ.php?consulta=consulta';</script>";

mysql_close($link);

A variável $busca[id] não esta recebendo o valor do SELECT.

 

Não sei se a apresentação da variável do segundo alert está correto?

 

Fico no aguardo,

 

Grato pela atenção,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá mensagem nenhuma. Ele cadastra normal só não mostra o valor da busca do SELECT. Ele mostra a mensagem mas sem o valor da variável. Fiz esse mesmo SELECT no banco e trouxe o valor certo, então ele está certo. Não sei o que pode estar acontecendo.

 

Grato pela atenção,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não retorna nenhum valor também.

 

Você fez o teste? Mesmo?

 

Return Values

 

The number of rows in a result set on success or FALSE on failure.

fonte: http://php.net/manual/en/function.mysql-num-rows.php

 

Alguma coisa tem que ser retornada. Seja FALSE ou um inteiro

 

 

 

ALém disso, você está passando o parâmetro da consulta da pior maneira possível: diretamente, sem qualquer filtragem. É possível passar qualquer valor, inclusive uma string para realizar SQL Injection

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu havia feito o teste, mas tentei apresentar o resultado em $busca[id]. Realizei novamente o teste agora sem o [id] e retornou o valor 1. Isso significa que o SQL está sendo executado, certo.

 

O que pode estar acontecendo que não retorna o valor do id?

 

Fico no aguardo de contato.

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

$query = "SELECT MAX(id) FROM clientes WHERE tel = '$_GET[tel]'";
$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$total = mysql_num_rows( $result );

echo 'Total: ' . $total . '<br />';

if ( $total > 0 )
{
   echo "<pre>";    
   while ( $busca = mysql_fetch_array($result) )
   {
       print_r( $busca );
   }
   echo "</pre>";
}

 

qual é a saída disso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código que você me passou acima retornou os valores abaixo:

Total: 1  

Array (
    [0] => 100053
    [MAX(id)] => 100053 
)  

É exatamente o valor de [MAX(id)] que quero apresentar no ECHO com o segundo ALERT.

 

Com isso descobri qual era o erro do SELECT.

 

Estava assim:

SELECT MAX(id) FROM clientes WHERE tel = '$_GET[tel]'

Foi só colocar id ao lado da função MAX(id), ficando assim:

SELECT MAX(id) id FROM clientes WHERE tel = '$_GET[tel]'

Essa mudança fez o valor aparecer na variável $busca[id], mas mesmo assim não consegui apresentá-la no alert do segundo ECHO.

 

Está parcialmente resolvido.

 

Agora tenho certeza que a sintaxe do segundo ECHO está errada.

echo "<script>alert('Informe protocolo de cadastro número: ".$busca[id]."');</script>";

HELP o que fazer?

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não me engano, precisa de um AS aí:

SELECT MAX(id) AS id FROM clientes WHERE tel = '$_GET[tel]'

 

A dica foi implementada e funcionou.

 

Agora meu problema é com o trecho abaixo:

echo "<script>alert('Informe protocolo de cadastro número: ".$busca[id]."');</script>";

Creio que a sintaxe esteja errada.

 

Espero ajuda.

 

Grato pela ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

como ficou se código depois das modificações?

poste o trecho modificado

 

O código ficou assim:

include 'access_db.php';

$query = "INSERT INTO clientes (tel, obs, condicao) VALUES ('$_GET[tel]','$_POST[obs]','$_POST[condicao]')";
mysql_query($query);

$query = "SELECT MAX(id) AS id FROM clientes WHERE tel = '$_GET[tel]'";
$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$busca = mysql_fetch_array($result);

/*$total = mysql_num_rows( $result );

echo 'Total: ' . $total . '<br />';

if ( $total > 0 )
{
   echo "<pre>";    
   while ( $busca = mysql_fetch_array($result) )
   {
       print_r( $busca );
   }
   echo "</pre>";
}
*/

echo "<script>alert('Cadastro realizado com sucesso !!!');</script>";
echo "<script>alert('Informe protocolo de cadastro número: ".$busca[id]."');</script>"; // o erro está aqui. Não apresenta o valor da busca no alert.
echo "<script>window.location='princ.php?consulta=consulta';</script>";

mysql_free_result($result);
mysql_close($link);

Grato pela atenção e ajuda.

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.