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

[PHP/MySQL] Erro:Unknown column in 'field list'

Discussão em 'Web Development' iniciada por Tha1, 9 de Setembro de 2006. (Respostas: 6; Visualizações: 2930)

  1. Tha1

    Tha1 Power Member

    Estou a usar o XAMPP para praticar programaçâo em PHP e MySQL, com um mini-projecto que consiste numa página de gestão de media(CD/DVD) existente em casa. Quando tento a inserção com esta query:
    PHP:
    $query "INSERT INTO media (titulo,tipo_media,formato,genero,sup_fisico,ano,emprestado) VALUES('".$_POST['tituloText']."',".$_POST['tipoMediaLb'].",".$_POST['formatoLb'].",".$_POST['generoLb'].",".$_POST['suporteLb'].",'".$_POST['anoLb']."',".$_POST['emprestadoRg'].")";
    $result mysql_query($query) or die('Query falhou: '.mysql_error());
    Dá-me esta mensagem:
    Código:
    Unknown column 'Livro' in 'field list'
    sendo 'Livro' um dos registos na tabela de MySQL a que dei o nome de media.
    Não creio que seja do código PHP, mas posso estar enganado. Quanto ao campo em questão,já fui ver como é que está, o campo existe e o nome está correcto, tanto neste código como na definição da tabela(sem espaços antes ou depois).
    Já andei à procura de respostas, mas sem sucesso. Alguma ideia? :confused:
     
  2. Lancaster

    Lancaster To fold or to FOLD?

    Heyas all..

    Primeiro vou dizer-te quando é que isso me costuma acontecer:
    - Quando me engano no nome da coluna da tabela.
    - Quando não ponho plicas na query em que essa coluna é uma string.

    Dando um exemplo rápido desta última:

    Tabela xpto, 2 campos:
    cod_xpto (integer), xpto ( varchar )

    insert into xpto (cod_xpto,xpto) values (1,Lancaster)

    Neste caso ele vai-se queixar que não encontra a coluna Lancaster.

    Verifica que se não te falta nenhuma plica, á volta dos $_POST..

    Hasta all [[]]
     
  3. Tha1

    Tha1 Power Member

    Esqueci-me de dizer, tanto esse como todos os outros campos,excepto o campo do título, são numéricos, por isso assim não estaria a respeitar a sintaxe. Visto isto, como é que posso guardar, não os valores dos campos em si(como Música,Livro,etc.), mas sim os seus ID's? Terei de ir buscar os id's correspondentes, um a um, das respectivas tabelas, e só depois guardar o registo??
     
  4. Lancaster

    Lancaster To fold or to FOLD?

    Heyas all..

    Para guardares esses campos tens de fazer isso mesmo, ir buscar os seus id's e depois usar esses valores para guardares na tabela media..

    Não sei como é que estás a fazer isso, mas penso que deves ter um conjunto de combo-boxes, com os vários campos tipo_media etc etc.. certo?

    Se sim, crias as combo-boxes com o value da option igual ao ID...

    Por exemplo:
    Pegando no tipo_media:
    Código:
    <select name="tipo_media">
    <option value="0">Livro</option>
    <option value="1">CD</option>
    <option value="2">DVD</option>
    </select>
    
    Depois ao fazeres POST, podes logo fazer o insert directo na base dados, que o valor que vai é o nº que está no value da option seleccionada.

    Hasta all e espero ter ajudado [[]]
     
  5. Tha1

    Tha1 Power Member

    Sim,ajudaste. Queria só saber uma coisa: com este código ele vai buscar o id pretendido?
    Neste exemplo,tendo a table tipo_media os campos media_id e media_desc:

    PHP:
    mysql_select_db($database_myConn$myConn);
    $query_RSTMedia "SELECT media_desc FROM tipo_media ORDER BY media_id ASC";
    $RSTMedia mysql_query($query_RSTMedia$myConn) or die(mysql_error());
    $row_RSTMedia mysql_fetch_assoc($RSTMedia);
    $totalRows_RSTMedia mysql_num_rows($RSTMedia);
    mais à frente,dentro das combo-boxes:
    PHP:
          do {
              ?>
            <option value="<?php echo $row_RSTMedia['media_id']?>"><?php echo $row_RSTMedia['media_desc']?></option>
            <?php
    } while ($row_RSTMedia mysql_fetch_assoc($RSTMedia));
      
    $rows mysql_num_rows($RSTMedia);
      if(
    $rows 0) {
          
    mysql_data_seek($RSTMedia0);
          
    $row_RSTMedia mysql_fetch_assoc($RSTMedia);
      }
     
  6. "SELECT media_desc FROM tipo_media ORDER BY media_id ASC"

    nesse query só tás a dizer para ele selecionar o campo media_desc, se quiseres também o campo media_id tens de o especificar..

    Código:
    SELECT
                media_desc,
                media_id
    FROM
                tipo_media
    ORDER BY
                media_id ASC
    
    
     
  7. Tha1

    Tha1 Power Member

    Funcou. Obrigado :)
     

Partilhar esta Página