Error al insertar xd!

Hola, estaba probando en insertar datos en tabla y he creado este formulario:

<form action="../php2.php" method="POST">
Alumno: <input type="text" name="usuario"><br />
Email: <input type="text" name="mail"><br />
Materia a estudiar: <select name="materia">
<option value="1">Lengua</option>
<option value="2">Filosofía</option>
<option value="3">Aritmética</option>
</select><br />
<input type="submit" value="Enviar">
</form>

Y este código para insertar:

<?php
$conexion=mysql_connect("mysql.99h.com.ar","miusuario","xxxxxxxxx")or die("Problemas con la conexión a la base de datos");
mysql_select_db("mibasededatos",$conexion) or die("Problemas en la selección de la tabla de datos");
mysql_query("insert into alumnos(nombre,mail,materia) values ('$_POST', '$_POST', $_POST),$conexion") or die ("Problemas al insertar datos".mysql_error());
mysql_close($conexion);

echo "...";
?>

Y me da el siguiente error:

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

Alguien sabe por qué?

Mi tabla de datos es así:

Se llama alumnos.
Contiene 3 campos:
1= VARCHAR 30 = alumno
2= VARCHAR 50 = mail
3= INT 11= materia
PRYMARY KEY= alumno

Será un error del código o del sql?

Saludos!!
_St escribió:Hola, estaba probando en insertar datos en tabla y he creado este formulario:



Y este código para insertar:



Y me da el siguiente error:



Alguien sabe por qué?

Mi tabla de datos es así:



Será un error del código o del sql?

Saludos!!

Muy facil , no puedes insertar datos en texto en un campo primary key , te recomiendo añadir un campo id int 10 not null auto_increment primary key .

Viendolo por encima aparentemente es el error, si continua igual decidme y reviso el code

Saludos!
Por más que cree el campo continua el mismo error:
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 #7' at line 1

Que podrá ser?

Saludos!
Prueba con:

[COLOR=#3E3E3E][FONT=Tahoma][I]<?php[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]$conexion=mysql_connect("mysql.99h.com.ar","miusua rio","xxxxxxxxx")or die("Problemas con la conexión a la base de datos");[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_select_db("mibasededatos",$conexion) or die("Problemas en la selección de la tabla de datos");[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_query("insert into alumnos(´nombre´,´mail´,´materia´) values ('$_POST[nombre]', '$_POST[mail]', $_POST[materia]),$conexion") or die ("Problemas al insertar datos".mysql_error());[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_close($conexion);[/I][/FONT][/COLOR]

[COLOR=#3E3E3E][FONT=Tahoma][I]echo "...";[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]?>
Nop, peor, me sale el mismo error más otro error que dice que fue ingresado incorrectamente con las comillas ! xd!

No entiendo que no funciona!!

Saludos!
Vale, pues intenta con esto jejeje

[COLOR=#3E3E3E][FONT=Tahoma][I]<?php[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]$conexion=mysql_connect("mysql.99h.com.ar","miusua rio","xxxxxxxxx")or die("Problemas con la conexión a la base de datos");[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_select_db("mibasededatos",$conexion) or die("Problemas en la selección de la tabla de datos");[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_query("insert into alumnos(nombre,mail,materia) values ('$_POST[nombre]', '$_POST[mail]', '$_POST[materia]'),$conexion") or die ("Problemas al insertar datos".mysql_error());[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]mysql_close($conexion);[/I][/FONT][/COLOR]

[COLOR=#3E3E3E][FONT=Tahoma][I]echo "...";[/I][/FONT][/COLOR]
[COLOR=#3E3E3E][FONT=Tahoma][I]?>
No creo que eso funcione porque materia es, en mysql una INT, y solo se le colocan comillas simples a los strings, creo..

D:!
php2.php:
<?php
$conexion=mysql_connect("","","")or die("Problemas con la conexión a la base de datos");
mysql_select_db("clases",$conexion) or die("Problemas en la selección de la tabla de datos");
mysql_query("INSERT INTO alumnos(alumno,mail,materia) VALUES('".$_POST["nombre"]."', '".$_POST["mail"]."','".$_POST["materia"]."')") or die ("Problemas al insertar datos".mysql_error());
mysql_close($conexion);

echo "...";
?>
Y el código final sería:

<?php
$conexion=mysql_connect("host","user","pass")or die("Problemas con la conexión a la base de datos");
mysql_select_db("tabla",$conexion) or die("Problemas en la selección de la tabla de datos");
mysql_query("INSERT INTO alumnos(alumno,mail,materia) VALUES('".$_POST["nombre"]."', '".$_POST["mail"]."','".$_POST["materia"]."')") or die ("Problemas al insertar datos".mysql_error());
mysql_close($conexion);

echo "...";
?>

Verdad? Todavía no entiendo porque la tantas comilas en los values, me lo explicas?
Lo hago para mayor limpieza en el codigo y pueda distinguir en codigos mas extensos (usando editor) cuales son las funciones o donde estan variables por defecto de php como $_POST suelen ponerle color a estas variables en los editores, y si lo dejo entre comillas no lo notaria, En fin el error estaba en ,$conexion despues del values ya que ya habias abierto la conexion llamando a la bd y ya no era necesario volverla a llamar por eso daba error

Saludos!
Muchas gracias, mañana lo pruebo porque ahora me caigo de sueño, y te digo, saludos!

---Update---

Ah, pero entonces estaría bien colocar los values solo con comillas simples?
Y es realmente necesario colocar entre comillas los values con INT? Porque según lo que leí, a ese tipo de valores no se le colocan las comillas.

Saludos!!
Por eso me evito problemas siguiendo reglas oficiales todos los $_POST[] dentro de los corchetes la sintaxis tiene que estar entre comillas aunque no todos cumplen esa regla , yo siempre lo hago y por eso son las tantas comillas que viste, en cuanto a lo del int la verdad yo siempre he usado de esta forma para insertar y nunca me ha dado problemas xD
Es verdad, a demás lo he probado sin tantas comillas y no funciona, pero lo que no entiendo es por qué comillas simples y dobles al mismo tiempo!

Y para qué funcionan los puntos? Porque yo los usaba para separar strings de variables, pero ahora me confundí! D:!
Toma del lado izquierdo cada comilla ( ' ) y comillas ( " ) como si fuera una llave de apertura { y a la primera comilla ' seria la llave de cierre }
quiero decir que cada comilla es como una apertura que debe ser cerrada en algun lugar y el punto sirve para concatenar es decir unir con un nuevo string o variable poniendo un ejemplo asi :
echo 'hola '.$POST["El $_POST esta fuera de comillas por lo que yo puedo estar dentro de comillas sin ocasionar problemas uniendome con un simple punto"];
Y aqui por que el uso de comilla y comillas :
echo ' hola 'soy string' jeje ';

si sustituyes las comillas por llaves quedaria asi:
echo {hola {soy string} jeje};
segun esto todo estaria bien , pero la diferencia es que no se puede poner una comilla dentro de otra porque ocasiona error entonces :
echo 'hola 'soy un error' jeje';
estaria mal pero si dentro de una comilla ingresas unas comillas o biceversa no daria error quedando asi :
echo 'hola "no soy un error" jeje';
Hay una manera de ingresar comilla dentro de comilla o comillas dentro de comillas usando esta sintaxis :
echo 'hola \'no soy un error\' jeje';

Espero y entiendas cualquier duda dilo

Saludos!
Me quedó claro todo menos el punto, es que no entiendo en este caso, es decir, si no estuvieran los puntos, tomaría "$_POST" como $_POST y no como su CONTENIDO?

A eso te refieres?

Saludos!!
al salir de las comillas , seria como salir de la llave } es decir php toma como que es el final de la linea y lo proximo que espera es el punto y coma ; o el cierre de parentesis pero al poner punto le dice que una la linea del codigo con otra nueva que en este caso seria $_POST y ya no interpreta que fue el final de la llave

echo 'hola soy el final'$_POST["Soy un error porque php cree que debo de estar en otra linea :(];
echo 'hola soy el final'.$_POST["jeje ahora php me interpreta como la misma linea y no soy error :)];
Me han hecho mucha gracia tus ejemplos, sobre todo el de soy un error jajajajaja