2013-11-19 5 views
1

Я создаю форму, в которой пользователь может обновлять ранее введенную информацию в полях относительно поля идентификатора.PHP: обновить ошибку Parse DB

Однако, я получаю синтаксическую ошибку синтаксического анализа при использовании метода HEREDOC для отображения изменений кода.

Моя ошибка отображается выглядит следующим образом:

Parse error: syntax error, unexpected '<<' (T_SL) in /Applications/XAMPP/xamppfiles/htdocs/serverside/phptut/update.php on line 24

Для справки мой сценарий на 24 вперед выглядит следующим образом:

echo<<<EOD 
    <b>The new record looks like this:</b> 
    Email: $email<br/> 
    First: $first<br/> 
    Last: $last<br/> 
    Status: $status<br/> 
EOD; 

И далее ссылаться мой код в тотальность это

<?php 
include "dbinfo.php"; 
//gets the variables from form submitted 
$id = $_POST[id]; 
$email = $_POST[email]; 
$first = $_POST[first]; 
$last = $_POST[last]; 
$status = $_POST[status]; 

//sets the values where the ID is equal to what was passed in 
$sql = "UPDATE contacts SET 
email = '$email', 
first ='$first', 
last = '$last', 
phone ='$phone' 
where ID = '$id' "; 

$result = mysql_query($sql) or die(mysql_error()); 
//excute 

//print what the new one looks like 
echo '<html><head><title>Updated Results</title></head><body>'; 
include ("header.php"); 
echo<<<EOD 
    <b>The new record looks like this:</b> 
    Email: $email<br/> 
    First: $first<br/> 
    Last: $last<br/> 
    Status: $status<br/> 
EOD; 

?> 

Любая помощь будет принята с благодарностью.

+0

@ Fred-II- Вы, безусловно, не – Phil

+0

У вас есть пространство в конце 'эхо <<< EOD' удалить его, и он будет работать так же, как Фил сказал ниже. –

+0

Ну, когда я скопировал код OP, это было пространство. @ По крайней мере, так оно и появилось, как единственный персонаж, если можно сказать. –

ответ

2

HEREDOC См

A third way to delimit strings is the heredoc syntax: <<< . After this operator, an identifier is provided, then a newline.

Там не должно быть пространство между <<< и идентификатором и должен быть только символ новой строки после. После символа <<<EOD вы получите одиночный символ пробега.

Работа демо здесь - http://codepad.org/Y2vxavDB

Кроме того, следует помнить о том, что расширение MySQL является устаревшим. Вы должны использовать MySQLi или PDO.

+0

К сожалению, когда я редактировал пространство, это не имело значения. – beckah

+1

@rsheeler У вас появляется вкладка или какой-либо другой символ пробела (кроме символа новой строки) после '<<< EOD' – Phil

+0

@Phil Я понял это для себя, и вы правы. Очевидно, что OP имеет пробел после 'EOD' и/или после завершения. На самом деле, я рад, что вы не сказали мне «почему», потому что мне действительно нравится самому разобраться :-) –

0

Идентификатор закрытия должен начинаться в первом столбце строки.

Вот еще один пример http://codepad.org/FobMK0AL

<?php 
echo<<<EOD 
<b>The new record looks like this:</b> 
Email: $email<br/> 
First: $first<br/> 
Last: $last<br/> 
Status: $status<br/> 
EOD; 

?> 
+1

Annnnnd. это сработало! :) Спасибо! – beckah

Смежные вопросы