1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

erro php + mysql

Discussão em 'Web Development' iniciada por toblesu, 27 de Março de 2008. (Respostas: 16; Visualizações: 1532)

  1. toblesu

    toblesu Power Member

    Tenho uma query para inserir dados numa tabela, mas nao entendo o erro que me dá! Diz que é um erro de sintaxe, mas se testo a query no Heidi, ela corre bem.. nao dá erro nenhum... não entendo!

    o erro é:

    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 'Resource id #3' at line 1

    o código que diz respeito a este erro é:

    $sql = "INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo,conteudo,autor,data_not,hora_not,ativar,id_foto,nome_foto)
    VALUES ('','0','$categoria','$titulo','$sub_titulo','$conteudo','$autor','$data_not','$hora_not','$activar','$id_foto','$nome_foto')";


    os campos estão correctos, as variáveis também... nao percebo!

    se me puderem ajudar??

    Obrigado!
     
  2. mascker

    mascker Power Member

    Boas,

    O nome do campo nome_foto está separado

    n ome_foto


    Saudações
     
  3. DanielGomes

    DanielGomes Power Member

    e "$con teudo"

    Quando tens um erro podes sempre usar um echo para ver o que está a sair.
     
  4. fil79

    fil79 Power Member


    aliás essa é uma das melhores maneiras de fazer debug quando se trata de erros de sql..
     
  5. toblesu

    toblesu Power Member

    Nops... no código está tudo junto.. nao sei como é que ao copiar os campos apareceram dessa forma!!

    já utlizei echo em muitos sitios, nas variáveis para ver se estavam a ser bem passadas, antes e depois das queries para verificar se "passava".. e nesse echos percebi que não passa dessa query.. e o erro nao está msm nesses campos, porque estão bem escritos!

    Mais alguma sugestão?

    obrigado
     
  6. mascker

    mascker Power Member

    Boas,


    Como já segurido, altera

    PHP:
    $sql "INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo ,conteudo,autor,data_not,hora_not,ativar,id_foto,n ome_foto) 
    VALUES ('','0','
    $categoria','$titulo','$sub_titulo','$con teudo','$autor','$data_not','$hora_not','$activar' ,'$id_foto','$nome_foto')";
    para

    PHP:
    $sql "INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo ,conteudo,autor,data_not,hora_not,ativar,id_foto,nome_foto) 
    VALUES ('','0','
    $categoria','$titulo','$sub_titulo','$conteudo','$autor','$data_not','$hora_not','$activar' ,'$id_foto','$nome_foto')";

    mysql_query($sql) or die(mysql_error());

    E coloca o resultado

    Saudações
     
  7. toblesu

    toblesu Power Member

    o resultado é o mesmo!!

    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 'Resource id #3' at line 1


    a parte do mysql_query($sql) or die(mysql_error());

    está numa parte mais "em baixo" do código!.....

     
  8. mascker

    mascker Power Member

    Boas,

    Vê as conexões à base de dados e a selecção da base de dados

    PHP:
    mysql_connect('....') or die(mysql_error());
    mysql_select_db('...') or die(mysql_error());
    Mas cheira-me que o erro não está aí. Podes colocar o código todo?
    Saudações
     
  9. toblesu

    toblesu Power Member

    código todo:


    PHP:
    <?
    // Mensagem de Erro
            
    $msg[0] = "Conexão com o banco falhou";
            
    $msg[1] = "Não foi possivél selecionar o banco de dados!";

    require(
    "../../config/conect_mysql.inc");

    //Tipo de transação se é "Inclusão ou Alteração"
    $tipo             mysql_real_escape_string($_POST["t"]);
    if(
    $tipo <> "e")
    {
        
    $id             mysql_real_escape_string($_POST["id"]);
        
    $autor           mysql_real_escape_string($_POST["autor"]);
        
    $conteudo        mysql_real_escape_string($_POST["conteudo"]);
        
    $categoria        mysql_real_escape_string($_POST["categoria"]);
        
    $data_not        mysql_real_escape_string($_POST["data_2"]);
        
    $hora_not        mysql_real_escape_string($_POST["hora"]);
        
    $sub_titulo        mysql_real_escape_string($_POST["sub_titulo"]);
        
    $titulo            mysql_real_escape_string($_POST["titulo"]);
        
    $ativar            mysql_real_escape_string($_POST["ativar"]);
        
        
    $id_foto        mysql_real_escape_string($_POST["nome_foto"]);
        
    $nome_foto        $id_foto;

    [
    falta aqui um código relativo a uma cena de imagensmas que tá em comentário pk ainda nao tá acbado]

    }
    //Monta a Query de Inclusão
    if($tipo == "i")
    {    
        
    $activar"off";
        echo 
    $sql "INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo ,conteudo,autor,data_not,hora_not,ativar,id_foto,nome_foto) 
    VALUES ('','0','
    $categoria','$titulo','$sub_titulo','$conteudo','$autor','$data_not','$hora_not','$activar' ,'$id_foto','$nome_foto')";

    mysql_query($sql) or die(mysql_error());  

    }
     
    Última edição pelo moderador: 28 de Março de 2008
  10. Doctor_Worm

    Doctor_Worm Power Member

    Código:
    INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo ,conteudo,autor,data_not,hora_not,ativar,id_foto,nome_foto) 
    VALUES ('','0',[COLOR=DarkOrange]'$categoria'[/COLOR],[COLOR=DarkOrange]'$titulo'[/COLOR],[COLOR=DarkOrange]'$sub_titulo'[/COLOR],[COLOR=DarkOrange]'$conteudo'[/COLOR],[COLOR=DarkOrange]'$autor'[/COLOR],[COLOR=DarkOrange]'$data_not'[/COLOR],[COLOR=DarkOrange]'$hora_not'[/COLOR],[COLOR=DarkOrange]'$activar' [/COLOR],[COLOR=DarkOrange]'$id_foto'[/COLOR],[COLOR=DarkOrange]'$nome_foto'[/COLOR])"
    Ai essas aspas nas variáveis....

    Resource id #3 quer dizer que o problema está no 3º campo. A categoria deve ser numérico e estás a passar a string '$categoria' e não o valor de $categoria. Claro que para os outros campos também.

    Não será esse o problema?

    Não te esqueças de validar os valores que vêm da form, senão, se alguém introduzir um valor não numérico, vais ter o mesmo problema. E para as datas também.
     
    Última edição: 28 de Março de 2008
  11. toblesu

    toblesu Power Member

    como assim as aspas?? nao percebi??
    costumo trabalhar assim.. e nao tinha tido problemas, até agora!!

    falta alguma aspa??

    ou está a sugerir do tipo '".$categoria."' ? nesta ultima versão..tenho desta forma, mas continua o mesmo erro!

    quanto ao campo, ele é numérico (é uma FK) e estou a passar numérico!!!
    este é o código da captar o valor de '$categoria' :

    //gera a lista de categorias.
    require_once("../../config/conect_mysql.inc");
    echo"<option value=\"-------\" selected=\"selected\">-------------------</option>\n";
    $res = mysql_query("SELECT * FROM categorias");
    while($registro = mysql_fetch_row($res))
    {
    $id_cat = $registro[0];
    $nome = $registro[1];
    echo"<option value=\"$id_cat\" title=\"$nome\">$nome</option>\n";
    }


    o valor que estou a passar é $id_cat.... ou seja $registro[0] que é a chave da tabela categorias....
     
  12. Doctor_Worm

    Doctor_Worm Power Member

    Ok, já percebi...

    nos campos que são numéricos não podes passar com aspas...

    Se $categoria = 1, ao colocares '$categoria' o php vai passar ao mysql '1' (alfanumérico) e não 1 (numérico) como devia estar a passar.

    Isso funciona para todos os campos numéricos

    Experimenta assim:
    Código:
    echo $sql = "INSERT INTO noticias (id,comentarios_id,categorias_id,titulo,sub_titulo ,conteudo,autor,data_not,hora_not,ativar,id_foto,nome_foto) 
    VALUES ('','0',[COLOR=DarkOrange]$categoria[/COLOR],'$titulo','$sub_titulo','$conteudo','$autor', '$data_not' ,'$hora_not','$activar' ,[COLOR=DarkOrange]$id_foto[/COLOR],'$nome_foto')";
    Já não mexo no php há tanto tempo que esqueci-me que entre " " os as variáveis são alteradas para os valores (o que já não acontece entre ' ')
     
    Última edição: 28 de Março de 2008
  13. toblesu

    toblesu Power Member

    vou tentar.. na verdade, tenho colocado smp aspas mesmo que os campos guardem valores numéricos e não tenho tido problemas..embora saiba que não é necessário... por isso é que nao entendi o problema!!!

    nops!! não é esse o problema......

    continua o mesmo erro!!!
     
    Última edição pelo moderador: 29 de Março de 2008
  14. Doctor_Worm

    Doctor_Worm Power Member

    Então coloca aqui o resultado do echo $sql.
     
  15. toblesu

    toblesu Power Member

    bolas...... problema resolvido..... mas nao tinha nada a ver com a query... nada a ver com o sql!! atão ainda menos entendi porque dava o erro relacionado com o SQl....

    tinha a ver com uma variável para retirar o valor vindo do browser.. tinha $_POST e deveria ter usado $_GET.....


    obrigado.
     
  16. hostmake

    hostmake Power Member

    Claro que tinha erro no SQL, provavelmente não aceitas NULL's.

    Eu ia-te dizer que o método mais fácil é sempre, fazeres um insert pelo PHPMyAdmin por exemplo, e depois comparares as sintaxes.
     
  17. toblesu

    toblesu Power Member

    costumo usar o heidi para testar as minhas queries (é mais "rápido" na resposta!! <comentário>) e testei essa query e ele fazia o insert sem erros..... o unico campo que pode parecer que está aceitar valor NULL (que na verdade nao está), é o id que é a chave primária que é auto-incremental... dai ter colocado para o campo id -> '' .


    obrigado na mesm! Erro era mesmo de ter colocado $_POST em vez de $_GET.... já que estou a passar valores plo url.. precisava logo do $_GET...

    Obrigado

    :-D

     

Partilhar esta Página