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

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:
 
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 [[]]
 
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??
 
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 [[]]
 
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($RSTMedia, 0);
      $row_RSTMedia = mysql_fetch_assoc($RSTMedia);
  }
 
"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
 
Back
Topo