PHP:语法错误,意外的T_字符串
我得到了这个PHP代码的语法错误PHP:语法错误,意外的T_字符串,php,syntax-error,Php,Syntax Error,我得到了这个PHP代码的语法错误 syntax error, unexpected T_STRING 上面写着第2行,这是包含行: <?php include 'config.inc.php'; // initialization $photo_upload_fields = ''; $counter = 1; // If we want more fields, then use, preupload.php?number_of_fi
syntax error, unexpected T_STRING
上面写着第2行,这是包含行:
<?php
include 'config.inc.php';
// initialization
$photo_upload_fields = '';
$counter = 1;
// If we want more fields, then use, preupload.php?number_of_fields=20
$number_of_fields = (isset($_GET['number_of_fields'])) ?
(int)($_GET['number_of_fields']) : 5;
// Firstly Lets build the Category List
$result = mysql_query('SELECT category_id,category_name FROM gallery_category');
while($row = mysql_fetch_array($result)) {
$photo_category_list .= <<<__HTML_END
<option value="$row[0]">$row[1]</option>\n
__HTML_END;
}
mysql_free_result( $result );
// Lets build the Image Uploading fields
while($counter <= $number_of_fields) {
$photo_upload_fields .= <<<__HTML_END
<tr><td>
Photo {$counter}:
<input name="photo_filename[]"
type="file" />
</td></tr>
<tr><td>
Caption:
<textarea name="photo_caption[]" cols="30"
rows="1"></textarea>
</td></tr>
__HTML_END;
$counter++;
}
// Final Output
echo <<<__HTML_END
<html>
<head>
<title>Lets upload Photos</title>
</head>
<body>
<form enctype="multipart/form-data"
action="upload.php" method="post"
name="upload_form">
<table width="90%" border="0"
align="center" style="width: 90%;">
<tr><td>
Select Category
<select name="category">
$photo_category_list
</select>
</td></tr>
<! - Insert the image fields here -->
$photo_upload_fields
<tr><td>
<input type="submit" name="submit"
value="Add Photos" />
</td></tr>
</table>
</form>
</body>
</html>
__HTML_END;
?>
我的include文件如下所示:
<?php
$mysql_link = mysql_connect("localhost","user","password");
mysql_select_db("db_name") or die("Could not select database");
$images_dir = "photos";
?>
解决方案:
我在代码中隐藏了不可见的unicode字符,这导致PHP解析器抱怨上述语法错误。删除前几行并重写它们。有时,如果复制并粘贴代码,它可能会插入unicode不可见字符,PHP无法正确解析这些字符。所以它抛出了这个错误。这种情况在我身上发生过好几次。在herdoc语法变量的开头和结尾有多个空格;这导致了一些问题。删除后面的空格
<<<__HTML_END
你的代码应该可以正常工作
另请参阅我找到答案的这个线程:将include用作:
include(“config.inc.php”)代码>用于正确语法。只需确保已关闭所包含文件中的所有“和”。通常,此错误指向文件中的第一行。“更多或更少”?错误似乎与包含的文件有关,因此最好了解更多而不是更少。删除(注释掉)插入include行以查看这一行是否触发了错误。您可能有一个不可见的字符(特殊空格或类似字符)在那里。您可以尝试删除有问题的行并重写它。检查您是否忘记在配置文件中的某个位置放置“try(include'config.inc.php');请务必注意,带有结束标识符的行不能包含其他字符。。。这特别意味着标识符不能缩进,分号前后不能有空格或制表符。。。如果这条规则被打破。。。它将不会被视为结束标识符,PHP将继续寻找一个。如果在当前文件结尾之前未找到正确的结束标识符,则在最后一行将导致分析错误。这是个人偏好的问题,而不是“正确的语法”。Include(如require、echo和许多其他)是一种语言构造,而不是函数,因此括号不是必需的,可以省略它们。
__HTML_END;