Ошибка разбора строки PHP с необходимой точкой с запятой после переменной

В моем PHP-коде у меня есть переменная $message который включает в себя сообщение для отправки мне, в котором есть переменные поста. Предполагается, что в конце должна быть точка с запятой... но она дает мне ошибку, говоря, что это неожиданно, но я знаю, что она мне нужна, потому что без нее не получится. Я в полной растерянности. Надеюсь, кто-то здесь может мне помочь.

Сообщение об ошибке:

PHP Parse error:  syntax error, unexpected ';'

Код PHP

if(!empty($_POST["name"]) && !empty($_POST["address"]) && !empty($_POST["city"]) && !empty($_POST["phone"]) && !empty($_POST["email"]) && !empty($_POST["type"]))
{
$message = "Name:" . $_POST["name"] . 
"Address:" . $_POST["address"] . 
"City:" . $_POST["city"] . 
"State:" . $_POST["state"] . 
"Zip Code:" . $_POST["zip"] . 
"Phone:" . $_POST["phone"] . 
"Email:" . $_POST["email"] . 
"Current Roof Type:" . $_POST["type"] . 
"Roof Age:" . $_POST["age"] .
"Is it leaking?:" . $_POST["leak"] . 
"Does it have hail damage?:" . $_POST["hail"] . 
"Insurance:" . $_POST["insurance"] . 
"Additional Comments:" . $_POST["extra"] . 
;                                          <---------------####Unexpected semicolon
$to = "emailasdasdasdasd";
$subject = "Free Estimate";
$from = "Guarantee Roofing";
$headers = "From:" . $_POST["name"];
mail($to,$subject,$message,$headers);
}

5 ответов

Решение

Вот проблема

 "Additional Comments:" . $_POST["extra"] . 
 ;

должно быть

  "Additional Comments:" . $_POST["extra"]   ;
"Additional Comments:" . $_POST["extra"] .  
                                         ^

Ненужный оператор конкатенации ----------------- здесь.

PHP ожидает строку / переменную рядом с оператором конкатенации и находит точку с запятой, что представляется неожиданным.

"Additional Comments:" . $_POST["extra"] . 
                                         ^---- dangling concatenation
;  

вы говорите PHP объединить пару строк, а затем завершить оператор без предоставления второй строки.

В конце строки есть дополнительная точка. Если вы удалите разрывы строк, вы получите

 ... . "Additional Comments:" . $_POST["extra"] . ;

Вам не нужно это дополнительное . после последней строки, которая подразумевает конкатенацию.

Удалить. после этой строки:

"Additional Comments:" . $_POST["extra"] .
Другие вопросы по тегам