Aqui te dejo un ejemplo de un formulario;
<html>
<body>
<h1 align="center" class="Estilo1">INGRESO DE PRODUCTOS</h1>
<FORM action="producto.php" method="post">
<P>
NOMBRE: <INPUT type="text" name="nombre"><BR>
DESCRIPCION: <INPUT type="text" name="descripcion"><BR>
<label>CATEGORIA:
<?php
include "conexionbd.php";
// Realizar una consulta SQL
$consulta = 'SELECT nombre FROM categoria';
$resultado = mysql_query($consulta) or die('La consulta falló: ' . mysql_error());
// Impresion de resultados en HTML
echo "<select name=\"categoria_id\">\n";
while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
foreach ($linea as $valor_col) {
echo " <option> $valor_col \n";
}
}
$res=$row["id"];
echo "</select>\n";
// Liberar conjunto de resultados
mysql_free_result($resultado);
?>
</label>
<BR><br>
<BUTTON name="enviar" value="enviar" type="submit">
Grabar </BUTTON>
</P>
</FORM>
</body>
</html>
En seguida el codigo para grabar a la BD
<HTML>
<HEAD>
<TITLE>Producto.php</TITLE>
</HEAD>
<BODY>
<?php
$nombre=$_POST['nombre'];
$descripcion=$_POST['descripcion'];
$categoria_id=$_POST['categoria_id'];
include "conexionbd.php";
$guardar = mysql_query("INSERT INTO producto (nombre,descripcion,categoria_id) VALUES ('$nombre','$descripcion','$categoria_id');");
mysql_close();
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="formulario_producto.php">Ingresar otro registro</a></div>
</BODY>
</HTML>
Aqui te dejo un pequeño cambio
$guardar = mysql_query("INSERT INTO producto (nombre, descripcion, categoria_id) VALUES ('$nombre', '$descripcion', '$categoria_id') ");
Prueba esto dandole espacios en la sintaxsis.
Un saludo espero que te haya sido de ayuda.
PD: Te dejo un artículo que encontre por internet aver si te puede ser de ayuda.
Link - http://soporte.enolgames.es/viewtopic.php?f=5&t=17