Я следую книге «Начало PHP, Apache, веб-разработка MySQL» от Wrox. Я слежу за ним дословно и по какой-то причине у меня проблема с кодом. Редактор говорит, что в моем коде нет ошибок. но когда я запускаю, он дает мне следующее сообщение: «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« в строке 3 »вот следующий код
<?php //take in the id of a director and return his/her full name function get_director() { global $db; $query = 'SELECT people_fullname FROM people WHERE people_id = ' . $director_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $people_fullname; } //take in the id of a lead actor and return his/her full name function get_leadactor($leadactor_id) { global $db; $query = 'SELECT people_fullname FROM people WHERE people_id = ' . $leadactor_id; $result = mysql_query($query, $db) or die (mysql_error($db)); $extract($row); return $people_fullname; } // take in the id of a movie type // and return the meaningful textual description function get_movietype($type_id) { global $db; $query = 'SELECT movietype_label FROM movietype WHERE movietype_id = ' . $type_id; $result = mysql_query($query, $db) or die (mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $movietype_label; } // conect to MySQL $db = mysql_connect('localhost', 'root', 'root') or die ('unable to connect. Check your parameters'); // make sure you are yousing the right database mysql_select_db('moviesite', $db) or die(mysql_error($db) ); // retrieve information $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) ); // determine number of rows in returned result $num_movies = mysql_num_rows($result); $table = <<<ENDHTML <div style ="text-align: center;"> <h2>Movie Review Database</h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right:auto;"> <tr> <th>Movie Title</th> <th>Year of the release</th> <th>Movie Director</th> <th>Movie Lead Actor</th> <th>Movie Type</th> </tr> ENDHTML; //loop throught the results while ($row = mysql_fetch_assoc($result) ) { extract($row); $director = get_director($movie_director); $leadactor = get_leadactor($movie_leadactor); $movietype = get_movietype($movie_type); $table .= <<<ENDHTML <tr> <td>$movie_name</td> <td>$movie_year</td> <td>$director</td> <td>$leadactor</td> <td>$movietype</td> </tr> ENDHTML; } $table .= <<<ENDHTML </table> <p>$num_movies Movies</p> </div> ENDHTML; echo $table ?>
После этого я попытался скопировать и вставить точный код мышления, возможно, я сделал что-то неправильно, и вот это следующий код:
<?php // take in the id of a director and return his/her full name function get_director($director_id) { global $db; $query = 'SELECT people_fullname FROM people WHERE people_id = ' . $director_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $people_fullname; } // take in the id of a lead actor and return his/her full name function get_leadactor($leadactor_id) { global $db; $query = 'SELECT FROM people WHERE people_id = ' . $leadactor_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $people_fullname; } // take in the id of a movie type and return the meaningful textual // description function get_movietype($type_id) { global $db; $query = 'SELECT movietype_label FROM movietype WHERE movietype_id = ' . $type_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $movietype_label; } //connect to MySQL $db = mysql_connect('localhost', 'root', 'root') or die ('Unable to connect. Check your connection parameters.'); // make sure you're using the right database mysql_select_db('moviesite', $db) or die(mysql_error($db)); // retrieve information $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)); // determine number of rows in returned result $num_movies = mysql_num_rows($result); $table = <<<ENDHTML <div style="text-align: center;"> <h2>Movie Review Database</h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: 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; // loop through the results while ($row = mysql_fetch_assoc($result)) { extract($row); $director = get_director($movie_director); $leadactor = get_leadactor($movie_leadactor); $movietype = get_movietype($movie_type); $table .= <<<ENDHTML <tr> <td>$movie_name</td> <td>$movie_year</td> <td>$director</td> <td>$leadactor</td> <td>$movietype</td> </tr> ENDHTML; } $table .= <<<ENDHTML </table> <p>$num_movies Movies</p> </div> ENDHTML; echo $table; ?>
когда я запускал код на этот раз, заголовок таблицы показывает, но часть кода также отображается в браузере. Это выглядит так: ENDHTML; // зацикливаем результаты while (= mysql_fetch_assoc (Resource id # 3)) {extract (); = get_director (); = get_leadactor (); = get_movietype (); . = << ENDHTML; }. = <<
любая помощь будет оценена Я новичок в программировании благодаря
Когда вы заканчиваете heredoc, вы не должны ставить ни одного символа в начале линии. В вашем коде есть heredocs с пробелами или вкладками перед ними. Удалите пробелы и поставьте свой heredoc в начале строки.
Закрывающая инструкция heredoc должна находиться в первой позиции в строке:
ENDHTML; // works ENDHTML; // won't work