我收到此PHP代码的语法错误
syntax error, unexpected T_STRING
Run Code Online (Sandbox Code Playgroud)
它表示第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;
?>
Run Code Online (Sandbox Code Playgroud)
我的include文件如下所示:
<?php
$mysql_link = mysql_connect("localhost","user","password");
mysql_select_db("db_name") or die("Could not select database");
$images_dir = "photos";
?>
Run Code Online (Sandbox Code Playgroud)
解:
我在代码中隐藏了隐形unicode字符,导致PHP解析器抱怨上述语法错误.
在HEREDOC语法变量的开头和结尾有多个空格; 这会导致问题.之后删除空格
<<<__HTML_END
Run Code Online (Sandbox Code Playgroud)
之后
__HTML_END;
Run Code Online (Sandbox Code Playgroud)
你的代码应该正常工作.
另见我找到答案的这个帖子:http://board.phpbuilder.com/board/showthread.php?t = 10333424