Ir para conteúdo

POWERED BY:

Arquivado

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

Jefferson NF

erro bobo mysql_query

Recommended Posts

pessoal estou com uma duvida boba aki

olha isso:

 

$ret = mysql_query($sql,$db_g);

 

essa variavel $ret esta recebendo FALSE ou TRUE, 0 ou 1? sim ou nao? e eh 1=true e 0=false?

to em duvida nisso pq logo apos esse mysql_query,vem outro executando outro sql,no caso sql2,mas na hora de verificar com ifs nao ta dando certo,por exemplo se um dos 2 derem nao eh pra cadastrar,soh eh pra casdastrar se os dois forem TRue,mas aki no meu sistema ta passando por isso (por esses ifs) nao sei pq,ae to kerendo saber se essa linha q postei retorna TRUE ou FALSE?

????

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valor Retornado

 

Para comandos SELECT, SHOW, DESCRIBE ou EXPLAIN, mysql_query() retorna um resource em caso de sucesso, ou FALSE em caso de falha.

 

Para outros tipos de consultas SQL, UPDATE, DELETE, DROP, etc, mysql_query() retorna TRUE em caso de sucesso ou FALSE em caso de erro.

 

O recurso de resultado retornado pode ser passado para mysql_fetch_array(), e outras funções para manipular tabelas de resultados, para acessar os dados retornados.

 

Use mysql_num_rows() para obter quantas linhas foram retornadas para um comando SELECT ou mysql_affected_rows() para obter quantas linhas foram afetadas por um comando DELETE, INSERT, REPLACE, ou UPDATE.

 

mysql_query() irá também falhar e retornar FALSE se o usuário não tiver permissões para acessar a tabela(s) referenciadas pela consulta.

Fonte: http://br2.php.net/mysql_query

 

Veja também a função is_resource(). Ela pode ser útil nessas verificações.

 

 

Mas como o Bruno disse, poste o código, para vermos como podemos montar isso. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql2 = "INSERT INTO documentosdados (dados) VALUES ('$vdados')";
$ret2 = mysql_query($sql2,$db_g);

if ($ret2 == 1)
{
   $sql = "INSERT INTO documentos (contrato,nome,descricao,datacad) VALUES ('$vcontrato','$vnomedoc','$vdescricao',current_timestamp())";
   $ret = mysql_query($sql,$db_g);
   if ($ret == 1)
   {
	 echo "Documento cadastrado !!!<br>";
	 echo '<a href="visualizar.php"><br />Visualizar</a><br />';
   }
   else
   {
		echo "Documento não cadastrado !!!<br>";
   }
}

else
{
   echo "Documento não cadastrado !!!<br>";
}

 

ae esta meu codigo fonte.com algumas modificações,antes eram um monte d if mas mudei e simplifikei soh pra isso

com esse meu 'novo' codigo,o q acontece eh isso:

qnd os dois estao corretos - cadastra

os dois errados - nao cadastra

segundo errado e primeiro certo - nao cadastra

mas

segundo certo e primeiro errado - cadastra

hahaha

e nao enh pra ser assim

se ter erro em algum nao eh pra cadastrar,soh pra cadastrar qnd os dois estiverem corretos e nao eh pra cadastrar qnd os dois estiverem errados e um dos dois estiverem erro tbm

deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qnd os dois estao corretos - cadastra

os dois errados - nao cadastra

segundo errado e primeiro certo - nao cadastra

mas

segundo certo e primeiro errado - cadastra

Isso quer dizer que o erro na SQL 1 só impede a inserção se a SQL também falhar. Logo, não há necessidade de verificar o sucesso da SQL 1, verifique só a segunda:

executar SQL1

if (executar SQL2)
	ok
else
	erro
A função mysql_affected_rows() também pode ser útil nesse caso.

 

 

 

e nao enh pra ser assim

se ter erro em algum nao eh pra cadastrar,soh pra cadastrar qnd os dois estiverem corretos e nao eh pra cadastrar qnd os dois estiverem errados e um dos dois estiverem erro tbm

deu pra entender?

essa parte confundiu tudo. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou tentar explicar melhor

soh pra cadastrar se os dois sqls estiverem corretos

se os dois estiverem com algum erro ou um deles estiver certo e o outro errado tbm nao eh pra cadastrar

deu pra enteder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom fiz assim:

$sql = "INSERT INTO documentos (contrato,nome,descricao,datacad) VALUES ('$vcontrato','$vnomedoc','$vdescricao',current_timestamp())";
$ret = mysql_query($sql,$db_g);

$sql2 = "INSERT INTO documentosdados (dados) VALUES ('$vdados')";
$ret2 = mysql_query($sql2,$db_g);

if ($sql)
{
   if ($sql2)
   {
	 echo "Documento cadastrado !!!<br>";
	 echo '<a href="visualizar.php"><br />Visualizar</a><br />';
   }
}

else
{
   echo "Documento não cadastrado !!!<br>";
}

soh q continua passando por esses ifs e msotra q foi cadastrado e chega na tabela e nao tem nda cadastrado,ker dizer ateh tem,pq tenho duas tabelas,ae cadastra em uma e na outra nao,mas nao eh pra ser assim eh pra ser nas duas ao msm tempo

qnd eu coloco algo q eu sei q passa pelos testes e da certo,ae aparece q cadastrou,vou no BD e da certo,ta la tdo cadastrado

mas se eu forçar um erro no primeiro sql,por exemplo se eu tirar a parte q cadastrar a data e a hora,fala q foi cadastrado ,ae vejo na primeira tabela nao tem nda cadastrado e na segunda tem

e se eu fizer ao contrario,se eu coloacr um arkivo mto grande,q eu sei q nao vai cadastrar,q vai dar erro no segundo sql,ele fala q foi cadastrado ,ae vou na tabela e soh cadastrou na primeira,a segunda ta vazia

ta estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao kerendo ser chato mas ja sendo,ainda ta dando erro ahahahahah

serio msm,nao sei + o q eu faço

 

meu codigo ficou assim agora,nem tinha percebido q tinha colocado sql ao inves d ret

$sql = "INSERT INTO documentos (contrato,nome,descricao,datacad) VALUES ('$vcontrato','$vnomedoc','$vdescricao',current_timestamp())";
$ret = mysql_query($sql,$db_g);

$sql2 = "INSERT INTO documentosdados (dados) VALUES ('$vdados')";
$ret2 = mysql_query($sql2,$db_g);

if ($ret)
{
   if ($ret2)
   {
	 echo "Documento cadastrado !!!<br>";
	 echo '<a href="visualizar.php"><br />Visualizar</a><br />';
   }
}

else
{
   echo "Documento não cadastrado !!!<br>";
}

msm com esse codigo desse jeito da erro,ele mostra a msg d erro,ateh ai td bem,mas qnd vou olhar a tabela esta la cadastrado

msm coisa d antes,msm eu mudando

ele cadastra msm se um dos dois estiver errado,e mostra msg d erro,mas na tabela ta cadastrado

ele soh nao cadastra msm se os dois estiverem errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só execute a consulta 2 se a primeira tiver sucesso:

 

PHP
$sql = "INSERT INTO documentos (contrato,nome,descricao,datacad) VALUES ('$vcontrato','$vnomedoc','$vdescricao',current_timestamp())";

$ret = mysql_query($sql,$db_g);

 

if ($ret)

{

   

    $sql2 = "INSERT INTO documentosdados (dados) VALUES ('$vdados')";

    $ret2 = mysql_query($sql2,$db_g);

 

    if ($ret2)

   {

     echo "Documento cadastrado !!!<br>";

     echo '<a href="visualizar.php"><br />Visualizar</a><br />';

   }

}

 

else

{

   echo "Documento não cadastrado !!!<br>";

}

 

veja se agora funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nestes exemplos mesmo que a query 2 falhe a 1º já foi gravada

ou você remove o registro dessa 1º query (com LAST_INSERT_ID() ) ou se puder testa as duas antes de gravar (se é pra não ter algum dado duplicado ou algo do tipo)

 

recomendo tb postar no forum de Mysql por que se naum me engano você vai ter que usar algum paramentro (INSERT DELAYED, INSERT BUFFERING não sei nada sobre isso), mas isso se você quiser fazer direto, fazendo um caminho um pouco + arcaico fica + facil tb.

 

Posta qual é a sua nessecidade por que so pode gravar quando as 2 queryes derem certos quais os indices das tabelas etc.. (eu uso sempre um indice UNIQUE e uso o INSERT INTO ... ON KEY DUPLICATE UPDATE caso a tabela não possa ter duplicidades).

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.