我在第18行收到错误。你可以看到<<<ENDHTML
之后没有空格,但我无法摆脱错误。我甚至认为我需要<?php?>
来覆盖整个代码。它也没有成功。
<?php
$db= mysql_connect('localhost','root','') or die('Unable to connect. Check your connect parameters');
$query = 'CREATE DATABASE IF NOT EXISTS moviesite';
mysql_query($query,$db) or die(mysql_error($db));
mysql_select_db('moviesite', $db) or die(mysql_error($db));
$query= 'SELECT movie_name, movie_year, movie_director,movie_leadactor,movie_type
FROM movie
ORDER BY movie_name ASC, movie_year DESC
';
$result = mysql_query($query, $db) or die(mysql_error($db));
$num_movies = mysql_num_rows($result);
//needs to show the same result as table1
$table = <<<ENDHTML<div style="text-align: center;">
<h2>Movie Review Database</h2>
<table border="0" cellspacing="2" cellpadding="2" style="width:60%; margin:auto;">
<tr>
<th>Movie Title</th>
<th>Year of Release</th>
<th>MOvie Director</th>
<th>Movie Lead Actor</th>
<th>Movie Type</th>
</tr>
ENDHTML;
while($row = mysql_fetch_array($result)){
extract($row);
$table .= <<<ENDHTML<tr>
<td>$movie_name</td>
<td>$movie_year</td>
<td>$movie_director</td>
<td>$movie_leadactor</td>
<td>$movie_type</td>
</tr>
ENDHTML;
}
$table .=<<<ENDHTML</table>
<p>$num_movies Movies</p>
ENDHTML;
</div>
?>
<p><?php echo $num_movies?>Movies</p>
答案 0 :(得分:1)
首先,您需要将标识符后面的代码放在其下的新行中。
$table = <<<ENDHTML<div style="text-align: center;">
如:
$table = <<<ENDHTML
<div style="text-align: center;">
和
$table .= <<<ENDHTML<tr>
到
$table .= <<<ENDHTML
<tr>
并为所有其他人做同样的事。
然后,你看到了吗?
</tr>
ENDHTML;
和
<p>$num_movies Movies</p>
ENDHTML;
它们在结束标识符之前包含空格。应该没有。
阅读手册http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
<强> 警告 强>
非常重要的是要注意,带有结束标识符的行必须不包含除分号(;)之外的其他字符。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。同样重要的是要认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符后面也必须跟一个换行符。
错误报告会发现并且会抛出:
解析错误:语法错误,意外的文件结束......
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
另外,使用mysql_
函数删除。它们已被弃用,将从未来的PHP版本中删除。
使用mysqli
with prepared statements或PDO with prepared statements。 他们更安全。