2

我收到此 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_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;  
?>

我的包含文件如下所示:

<?php  
  $mysql_link = mysql_connect("localhost","user","password");  
  mysql_select_db("db_name") or die("Could not select database");  
  $images_dir = "photos";  
?> 

解决方案:

我在代码中隐藏了不可见的 unicode 字符,导致 PHP 解析器抱怨上述语法错误。

4

4 回答 4

5

HEREDOC 语法变量的开头和结尾有多个空格;这会导致问题。去掉后面的空格

<<<__HTML_END

之后

__HTML_END;

并且您的代码应该可以正常工作。

另请参阅我找到答案的线程:http ://board.phpbuilder.com/board/showthread.php?t=10333424

于 2012-05-28T11:48:58.053 回答
4

删除前几行并重写它们。有时,如果您复制和粘贴代码,它会插入 unicode 不可见字符,PHP 无法正确解析这些字符。所以它会抛出这个错误。它发生在我身上好几次了。

于 2012-05-28T11:35:29.277 回答
0

只要确保你已经关闭了你所包含的文件中的所有“和”。通常这个错误指向文件的第一行。

于 2014-08-14T20:41:24.070 回答
-2

使用包含作为:include("config.inc.php");以获得正确的语法。

于 2012-05-29T11:50:31.087 回答