Error: unexpected T_STRING

Hola amigos.

He estado intentando crear un script con php para ingresar una serie de datos de un formulario a una base de datos.
He creado un formulario con diferentes campos y un script para comprobar que no estén vacíos, que estén escritos correctamente, etc.
El problema llega cuando quiero introducir esos datos a la base de datos.
El error es el siguiente:

Parse error: syntax error, unexpected T_STRING in C:\...\insertar-registros.php on line 70

Y la línea 70 es la siguiente:

mysql_query(INSERT INTO usuarios (email, password, nombre, apellido, colegio, fecha, especialidad, descricion)VALUES ($email, $password, $nombre, $colegio, $fecha, $especialidad, $descripcion) or die(mysql_error ());

He creado correctamente una conexión con la base de datos y he evitado la inyección SQL anteriormente.

¿Alguien puede echarme una mano?
Salu2. :)
Hola!

Siempre que aparezca el mensaje Syntax error, unexpected T_STING significa que dejaste una cadena de texto sin comillas u olvidaste cerrar la cadena de caracteres. En este caso, no envolviste la consulta SQL en comillas:

mysql_query( "INSERT INTO usuarios (email, password, nombre, apellido, colegio, fecha, especialidad, descricion) VALUES ($email, $password, $nombre, $colegio, $fecha, $especialidad, $descripcion)" ) or die( mysql_error () );

Saludos!
Hola de nuevo.

Gracias skaparate, pero es que cometo errores de novato... ;)
Bueno, pues después de aplicar la consulta tal como me dijiste me salen otra serie de errores.
Para empezar me salen estos, tantos como variables:

( ! ) Notice: Undefined variable: email in C:\...\insertar-registros.php on line 16

En realidad no es la primera vez que me sale este error, pero otras veces lo solucioné aplicando comillas a las variables, pero en esto no funcionó.
Además, al final de la página me sale el siguiente mensaje:

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


Dejo los dos archivos que tengo, por si acaso:

conexion.php
<?php
$dbhost = "localhost" ;
$dbuser = "root" ;
$dbpass = "" ;
$db = "prueba" ;
$conectar = mysql_connect($dbhost,$dbuser,$dbpass) ; mysql_select_db($db) ;
?>

insertar-registros.php
8:   <body>
9:   <?php require_once('Connections/conexion.php'); ?>
10: <?php
11:
12: $state=false;
13:
14: $conectar
15:
16: mysql_query("INSERT INTO usuarios(email, password, nombre, apellido, colegio, fecha, especialidad, descricion)VALUES($email, $password, $nombre, $colegio, $fecha, $especialidad, $descripcion)") or die(mysql_error ());
17:
18: $state = true;
19:
20: ?>
21:
22: <?php if ($state) { ?>
23: <p><em>Registro insertado correctamente</em></p>
24: <?php } ?> 
25: </body>
(Como se puede ver he aligerado y he eliminado líneas de código innecesario)

¿Alguien puede ayudarme? :).

Salu2.
Cuando PHP dice "Undefined variable NNN..." significa que la variable NNN no existe en ninguna parte del código. En este caso, ninguna de las variables que hay en la consulta ($email, $password, etc.) existe. Probablemente las borraste al "limpiar" el código :P.
Como bien ha dicho el amigo @skaparate no has definido las variables, y tú código puede ser optimizado para funcionar mejor (a parte de ser más legible :P)

conexion.php
<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "password";
$db_name = "prueba";

$mysql = mysql_connect( $db_host, $db_user, $db_pass ) or die( 'Error al conectar a la base de datos: ' . mysql_error() );
mysql_select_db( $db_name ) or die( 'Error al seleccionar la base de datos: ' . mysql_error() );

?>

insertar-registros.php
<body>
<?php

require_once 'Connections/conexion.php';

$email = $_POST['email'];
$password = $_POST['password'];
// Declaras el resto de variables aquí

if( mysql_query( "INSERT INTO usuarios (email, password, nombre, apellido, colegio, fecha, especialidad, descricion) VALUES ($email, $password, $nombre, $colegio, $fecha, $especialidad, $descripcion)" ) ){
  echo '<p><em>Registro insertado correctamente</em></p> ';
}

?>
</body>
Hola, yo también tengo un problema con el mismo error pero con otro código distinto en todos los foros que he estado hablan de comillas simples dentro de las dobles o biceversa pero ese no es mi caso y que en esa línea no hay nada escrito.
Yo lo que pretendo hacer en recoger los datos de un formulario sencillo, nombre,email y la tabla se llama alumnos.

resulta que habré hecho el ejercicio como unas 6 o 7 veces y dos de cada tres me da error y es que lo comparo con los que hecho que funcionan, y no encuentro la diferencia, y dos de cada tres veces me da error.

este es el error:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\ya\base1\alumnos\insertar_alumnos1.php on line 25

pero resulta que en la línea 25 no hay nada y en la línea 23 esta esta línea
echo "Los datos se han insertado";
y en la línea 26 el cierre de php


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>

<?php

include("conexion.php");

$nombre=$_REQUEST['nombre'];
$mail=$_REQUEST['mail'];
$curso=$_REQUEST['curso'];

$con=mysql_connect($host,$user,$pw) or die("No se ha conectado".mysql_error());
mysql_select_db("base1",$con) or die("No se ha conectado".mysql_error());

mysql_query("INSERT INTO alumnos(nombre,mail,curso) VALUES('$nombre','$mail','$curso')",$con)or die("No se ha conectado".mysql_error());

mysql_close($con);
echo "Los datos se han insertado";


?>

</body>
</html>



código HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h2>Registro de datos en una tabla</h2>

<form action="insertar_alumnos.php">
Ingrese su nombre: <br>
<input type="text" name="nombre"><br>
Ingrese su correo: <br>
<input type="text" name="mail"><br>

<select name="curso" id="curso">
<option value="1">PHP</option>
<option value="2">AJAX</option>
<option value="3">JSP</option>
</select>
<br>
<input type="submit" value="confirmar">;

</form>
</body>
</html>

No se como solucionar este problema ya que no encuentro nada anormal en el código, gracias por vuestra ayuda
@registrosmaxx, ¿ese es el código tal cual lo ejecutas o lo modificaste? Lo único malo que veo es que estás usando funciones obsoletas: mysql_* está obsoleto y debes utilizar mysqli_*.

Tu código migrado a mysqli:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>
            Document
        </title>
    </head>
    <body>
        <?php
require_once 'conexion.php';
$nombre=$_REQUEST['nombre'];
$mail=$_REQUEST['mail'];
$curso=$_REQUEST['curso'];
[COLOR="#FF0000"]// $host, $usuario, $password y $base_de_datos están en 'conexion.php'[/COLOR]
$con = new mysqli( $host, $usuario, $password, $base_de_datos );
if ( $con->connect_errorno ) {
    echo '<p class="error connection-error">No me pude conectar a la base de datos: ' . $con->connect_error . '</p>';
    exit;
}
$query = $con->escape_string( "INSERT INTO alumnos(nombre,mail,curso) VALUES('$nombre','$mail','$curso')" );
$result = $con->query( $query );
if ( $result === false ) {
    echo '<p class="error query-failure">No se ejecutó la consulta: (' . $con->errno . ') ' . $con->error . '</p>';
} else {
    echo '<p class="success query-success">Datos guardados!</p>';
    $result->close();
}
$con->close();
        ?>
    </body>
</html>
Hola, gracias por responder, estaba utilizando estas funciones absoletas porque la función mysqli_ me estaba dando problemas de conexión ya que yo para seguir el tutorial tengo instalada la versión de php 5.3 y a lo mejor era por eso que me daba los errores de conexión he instalado la última versión y ya no meda el error de conexión de ahora en adelante y voy a utilizar esta.
El error de este script no se lo que será ya lo he dejado por imposible porque todos los que lo han visto no encuentran nada, y encima el error lo da en una línea que no hay nada escrito muy raro todo, lo dejo así, porque sino me voy a volver loco buscando la solución.

Y si tiene un include a una conexión que esta probada y funciona con otros scrips.
gracias por el consejo de la funciones mysql.

mxx
@registrosmaxx, por casualidad, ¿intentaste borrar todos los espacios en blanco entre el ; y la etiqueta ?>?:

// Omito el código completo para no copiar/pegar todo.
mysql_close($con);
echo "Los datos se han insertado"; ?>

Tal vez funcione.