2011-12-06 10 views
10

He estado mirando este código durante horas y no puedo entender dónde está mi error. Sé que este error de sintaxis suele aparecer debido a falta de llave o algún problema con las comillas simples/dobles y no estoy seguro de que haya alguna en mi código. Solo estoy tratando de arreglar mi sintaxis ahora mismo para poder compilar el código completamente. Cualquier ayuda sería muy apreciada. Aquí está mi código:error de sintaxis inesperado T_ENCAPSED_AND_WHITESPACE, esperando T_STRING o T_VARIABLE o T_NUM_STRING

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title>Add to and Read from the Database</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
</head> 
<body> 

<?php 
function print_form() { 
echo <<<END 
     <form action="$_SERVER[PHP_SELF]" method="post"> 

    <h3>Please put your comments below.</h3> 

<input type="hidden" name="stage" value="process" > 
<p>Name:</p> 
<input type="text" size="30" name="WholeName" /> 
<p>Comment:</p> 
<input type="text" size="200" name="Comment" /> 

<input type ="submit" value ="Submit" > 
</form> 
END;  

    } 
function process_form() { 

print "<p>adding comment...</p>"; 

$Name = $_POST['WholeName']; 
$Comment = $_POST['Comment']; 

    if(preg_match("^[a-zA-Z]+$", $Name)) { 
     if(preg_match("^[a-zA-Z0-9]_\-\'[.?!]+$", $Comment)) { 
      $sql = "insert into comments1 values ( 
      '$Name', 
      '$Comment')"; 
      $result = mysql_query($sql) or die("Mysql query failed"); 
     } else { 
     print "invalid name"; 
     } 
    } else { 
print "invalid characters"; 
} 

} 

$db = mysql_connect("", "", ""); 
if (!$db) { 
    print "Error - Could not connect to mysql"; 
    exit; 
} 

$er = mysql_select_db(""); 
if (!$er) { 
    print "Error - Could not connect to comments1 database"; 
    exit; 
} 

if (isset($_POST['stage']) && ('process' == $_POST['stage'])) { 
    process_form(); 
} else { 
    print_form(); 
} 

?> 

</body> 
</html> 
+9

Es una buena práctica indicar dónde se informa exactamente el error (es decir, número de línea y número de columna). – Gian

+0

esta es de hecho una pregunta "demasiado localizada" –

+0

Solo una nota para ahorrarse un montón de tirones de cabello: Este tipo de errores se pueden rastrear fácilmente mediante el uso de un buen IDE que inspecciona su código. – Oldskool

Respuesta

25

Su problema es que no está cerrando correctamente su HEREDOC. La línea que contiene END;must not contain any whitespace afterwards.

+2

. Nunca lo habría hecho. Muchas gracias. Eso lo resolvió – user1083482

+0

me consigue todo el tiempo. – Ragamffn

+0

Y no debe contener ningún espacio en blanco ANTES del 'FINAL', como acabo de enterarme al intentar formatear mi código para poder leerlo. – limeygent

0

podría ser un problema de pegar, pero por lo que puedo ver desde el código, que se está perdiendo las comillas simples alrededor de la parte HTML usted es eco-ción.

Si no, ¿podría publicar el código correctamente y decirnos qué línea está causando el error?

2

Tiene espacios adicionales después de END; que provocan que el heredoc no finalice.

35

Me encontré con esta pregunta porque tenía el mismo error. El mío se debió a un problema ligeramente diferente y, como lo resolví por mi cuenta, pensé que sería útil compartirlo aquí. código original con el tema:

$comment = "$_POST['comment']"; 

Debido a las que encierran comillas dobles, el índice no se eliminan las referencias correctamente conduce al error de asignación. En mi caso elegí arreglarlo así:

$comment = "$_POST[comment]"; 

pero cayendo cualquiera de los dos presupuestos funciona; es una cuestión de estilo, supongo :)

+1

En mi caso, fue un retroceso callejero. El marcador de sintaxis de Geany no lo notó. Pero el resaltador de sintaxis de Joe lo atrapó. Inicialmente tu respuesta me ayudó pero estaba luchando contra un enemigo imaginario todo el tiempo ;-) –

+0

Gracias, no estaba al tanto de esto –

Cuestiones relacionadas