duvida num codigo php e my sql

saskia

Power Member
boa noite eu kero implementar o codigo que esta abaixo mas quando abro o navegador da o seguinte erro: Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\ariana2\inserir.php on line 14
Erro de inclusão

como posso resolver este erro?? desde ja obrigado

PHP:
<?
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 $conexao = mysql_connect("$local", "$user", "$pass") or die ("Erro de mysql - Conexao = " . mysql_error());
 $sql = mysql_select_db("$db") or die ("Erro de mysql - Conexao = " . mysql_error());
if($conexao){
 $sql="insert into empresa"
 ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
 ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
 $res2 = mysql_db_query(empresa,$sql,$res1);
   if ($res2) {
      echo ("Novo registro adicionado");
   } 
   else {
      echo("Erro de inclusão ".mysql_error()."\n");
   }
} 
else {
  echo("Erro de conexão ".mysql_error()."\n");
}
mysql_close($conexao);

?>
 
Última edição pelo moderador:
Antes de mais, para perceber melhor o código,
PHP:
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
 
if($conexao){
 $sql="insert into empresa"
     ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
 $res2 = mysql_db_query(empresa,$sql,$res1);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>
Estava tão desorganizado que nem dava para olhar para ele.
Logo à partida, aconselho-te a não usares as aspas em volta de variáveis (tipo "$var") quando não há texto à volta. São inúteis :)

edit - ok, estou a ver duas coisas na mesma linha:
PHP:
 $res2 = mysql_db_query(empresa,$sql,$res1);
1) Coloca empresa entre aspas. É uma string.
2) Estás a passar como identificador da ligação a variável $res1, mas ali estás a criar o identificador com o nome $conexao:
PHP:
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());

Testa isto:

PHP:
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
 
if($conexao){
 $sql="insert into empresa"
     ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
 $res2 = mysql_db_query("empresa",$sql,$conexao);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>
 
Última edição:
Agradecia que não enviasses PMs :P o tópico serve para esclarecer esta questão, e continuá-la em privado não só não faz sentido como deixa o tópico incompleto ;)

Sabes como trabalha o mysql_db_query? Supostamente, o primeiro argumento é o nome de uma base de dados; o segundo é o query e o terceiro é um link para uma conexão à BD.
Aquela linha dizia que a BD onde estás a fazer o query é a "empresa", e não a "ariana", como seleccionavas acima.
Se isto não estiver certo, usa o mysql_query em vez do mysql_db_query e remove o primeiro argumento, ficando
PHP:
$res2 = mysql_query($sql,$conexao);
 
desculpa ter respondido po privado...
tentei o k m disseste e da o seguinte erro
Erro de inclusão You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','','','','','','','','')' at line 1
 
Troca o query por isto:
PHP:
$sql="insert into empresa "
     ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
 
desculpa la a burrice mas isso nao é o k tenho nas linhas de codigo anteriores???

PHP:
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
 
if($conexao){
 $sql="insert into empresa"
     ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
 $res2 = mysql_query($sql,$conexao);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>
 
Última edição pelo moderador:
Tem diferenças. Repara, no teu caso não tens `` à volta dos nomes das colunas, e não tens "VALUES" entre os () ().
O teu código está como
INSERT INTO tabela(coluna,coluna)("valor","valor")
em vez de
INSERT INTO tabela (`coluna`,`coluna`) VALUES ("valor","valor")
como deve estar, e é assim que eu pus.

Troca aquilo que puseste a amarelo por aquilo que eu escrevi :)
 
Última edição:
desculpa tar te a incomodar tanto mas eu sou um zero a esquerda nestas coisas :P

agora ja grava na bd mas a minha intençao era numa pagina chamada empresa com o seguinte codigo :
PHP:
<p align="center"><font face="arial" size="4" color="green"><b>Cadastro da Empresa</b></p> <BR>
<center>
<form method="POST" action="inserir.php">
 
</form>
</center>
<table border="0" width="30%" bgcolor="#B0B0B0">
<tr >
<td width="10%"><font face="arial" size="3" color="green">Nome:</font></td>
<td> <input type="text" size="20" name="nome"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Endereço:</font></td>
<td><input type="text" size="20" name="endereco"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Bairro:</font></td>
<td> <input type="text" size="20" name="bairro"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Cidade:</font></td>
<td><input type="text" size="20" name="cidade"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Estado:</font></td>
<td><input type="text" size="20" name="estado"></td>
</tr>
<tr>
 
<td><font face="arial" size="3" color="green">Cep:</font></td>
<td> <input type="text" size="20" name="cep"></td>
</tr>
<tr>
 
<td><font face="arial" size="3" color="green">Telefone:</font></td>
<td> <input type="text" size="20" name="telefone"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Cnpj:</font></td>
<td><input type="text" size="20" name="cnpj"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Ie:</font></td>
<td> <input type="text" size="20" name="ie"></td>
</tr>
 
<tr>
<td></td>
<td><input type="submit" value="Cadastrar"></td>
</table>
 
chamava a outra pagina que ja t mostrei k tem o nome de inserir.php
 
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
 
if($conexao){
 $sql="insert into empresa "
     ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
 $res2 = mysql_query($sql,$conexao);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>
ou seja, tipo mostra ao utilizador a pagina empresa ... pede os dados ao utilizador e guarda na bd empresa...

e o k o programa ta a fazer agora é so guardar registos vazios na bd
 
Última edição pelo moderador:
Por favor, não escrevas os posts a amarelo. O fórum para mim está azul claro, e misturado com o amarelo é impossível ler o que tens escrito. Usa a cor normal do fórum, sff, e acrescenta a tag [php] e [/php] à volta do código :)

O que podias fazer no inserir.php seria uma vez mais mudar o query. No entanto, pode vir a existir uma falha de segurança (SQL Injection) se o fizeres assim sem mais nem menos, por isso, o melhor é fazeres isto com todas as variáveis:

$nome = mysql_real_escape_string($_POST["nome"]);
$nome, $endereco, $bairro, $cidade, ... mudando sempre o nome da variável em $nome e em $_POST["nome"]
 
seria ***** coisa deste genero????

pagina inserir.php

PHP:
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
$nome = mysql_real_escape_string($_POST["nome"]);
$endereco = mysql_real_escape_string($_POST["endereco"]);
$bairro = mysql_real_escape_string($_POST["bairro"]);
$cidade = mysql_real_escape_string($_POST["cidade"]);
$estado = mysql_real_escape_string($_POST["estado"]);
$cep = mysql_real_escape_string($_POST["cep"]);
$telefone = mysql_real_escape_string($_POST["telefone"]);
$cnpj = mysql_real_escape_string($_POST["cnpj"]);
$ie = mysql_real_escape_string($_POST["ie"]);
 
if($conexao){
 $sql="insert into empresa "
     ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
 $res2 = mysql_query($sql,$conexao);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>
 
Última edição pelo moderador:
se a pagina empresa for assim :

PHP:
<td> <input type="text" size="20" name="telefone"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Cnpj:</font></td>
<td><input type="text" size="20" name="cnpj"></td>
</tr>
 
<tr>
<td><font face="arial" size="3" color="green">Ie:</font></td>
<td> <input type="text" size="20" name="ie"></td>
</tr>
 
<tr>
<td></td>
<form method="POST" action="inserir.php">
<td><input type="submit" value="Cadastrar"></td>

</table>


E a pagina inserir.php for assim:
PHP:
<?php
$local = "localhost";
$user = "root";
$pass = "";
$db = "ariana";
 
$conexao = mysql_connect($local, $user, $pass) or die ("Erro de mysql - Conexao = " . mysql_error());
$sql = mysql_select_db($db) or die ("Erro de mysql - Conexao = " . mysql_error());
$nome = mysql_real_escape_string($_POST["nome"]);
$endereco = mysql_real_escape_string($_POST["endereco"]);
$bairro = mysql_real_escape_string($_POST["bairro"]);
$cidade = mysql_real_escape_string($_POST["cidade"]);
$estado = mysql_real_escape_string($_POST["estado"]);
$cep = mysql_real_escape_string($_POST["cep"]);
$telefone = mysql_real_escape_string($_POST["telefone"]);
$cnpj = mysql_real_escape_string($_POST["cnpj"]);
$ie = mysql_real_escape_string($_POST["ie"]);
 
if($conexao){
 $sql="insert into empresa "
     ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
     ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
 $res2 = mysql_query($sql,$conexao);
 
 if ($res2) {
  echo ("Novo registro adicionado");
 } else {
  echo("Erro de inclusão ".mysql_error()."\n");
 }
 
} else {
 echo("Erro de conexão ".mysql_error()."\n");
}
 
mysql_close($conexao);
?>


assim ja guarda na bd a partir da pagina empresa. k era cm eu keria... mas nao guarda o k eu escrevo... os registos vao em branco...
 
Última edição pelo moderador:
Não reparei numa coisa: o <form> tem de vir ANTES dos <input>s e o </form> tem de estar DEPOIS.
Também tens de olhar para o código com um olhar crítico :P se os campos estão fora do formulário, então não são enviados nele, não é?
No teu código, põe o <form...> antes do <table> e o </form> depois do </table>.
 
Back
Topo