Первая ссылка идет на вопрос, я спросил по поводу вопрос, связанный с использованием синтаксиса Heredoc I am unable to fix an issue concerning an HEREDOC syntax errorИзвлечение данных из SQL с помощью PHP
Вторая ссылка идет на вопрос очень похож на ссылку выше Issue with heredoc and PHP
У меня возникла проблема с получением данных из базы данных на php-странице. Проблема не связана с Heredoc, Heredoc находится в коде, но проблема вызвана синтаксической ошибкой sql.
<?php
// riceve l'identifictivo di un regista e ne restituisce il nome completo
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;
}
// riceve l'identificativo di un attore principale e ne restituisce il nome
// completo
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));
$row = mysql_fetch_assoc($result);
extract($row);
return $people_fullname;
}
// riceve l'identificativo di un tipo di film e ne restituisce la
//descrizione
function get_movie($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;
}
// funziona per calcolare se un film ha generato un profitto, una perdita o è
// in pareggio
function calculate_differences($takings, $cost) {
$difference = $takings - $cost;
if ($difference < 0) {
$color = 'red';
$difference = '$' . abs($difference) . ' million';
} elseif ($difference > 0) {
$color ='green';
$difference = '$' . $difference . ' million';
} else {
$color = 'blue';
$difference = 'broke even';
}
return '<span style="color:' . $color . ';">' . $difference . '</span>';
}
// collegamento a MYSQL
$db = mysql_connect('localhost', 'pippo', 'pluto') or
die ('Unable to connect. Check your connection parameters. ');
mysql_select_db('moviesite', $db) or die(mysql_error($db));
// recupera le informazioni
$query = 'SELECT
movie_name, movie_year, movie_director, movie_leadactor,
movie_type, movie_running_time, movie_cost, movie_takings
FROM
movie
WHERE
movie_id = ' . $_GET['movie_id'];
$result = mysql_query($query, $db) or die(mysql_error($db));
$row = mysql_fetch_assoc($result);
$movie_name = $row['movie_name'];
$movie_director = get_director($row['movie_director']);
$movie_leadactor = get_leadactor($row['movie_leadactor']);
$movie_year = $row['movie_year'];
$movie_running_time = $row['movie_running_time'] .' mins';
$movie_takings = $row['movie_takings'] . ' million';
$movie_cost = $row['movie_cost'] . ' million';
$movie_health = $calculate_differences($row['movie_takings'],
$row['movie_cost']);
// mostra le informazioni
echo <<<ENDHTML
<html>
<head>
<title>Details and Reviews for: $movie_name</title>
</head>
<body>
<div style="text-align: center;">
<h2>$movie_name</h2>
<h3><em>Details</em></h3>
<table cellpadding="2" cellspacing="2"
style="width: 70%; margin-left: auto; margin-right: auto;">
<tr>
<td><strong>Title</strong></strong></td>
<td>$movie_name</td>
<td><strong>Release Year</strong></strong></td>
<td>$movie_year</td>
</tr><tr>
<td><strong>Movie Director</strong></td>
<td>$movie_director</td>
<td><strong>Cost</strong></td>
<td>$$movie_cost<td/>
</tr><tr>
<td><strong>Lead Actor</strong></td>
<td>$movie_leadactor</td>
<td><strong>Takings</strong></td>
<td>$$movie_takings<td/>
</tr><tr>
<td><strong>Running Time</strong></td>
<td>$movie_running_time</td>
<td><strong>Health</strong></td>
<td>$movie_health<td/>
</tr>
</table></div>
</body>
</html>
ENDHTML;
?>
и это синтаксическая ошибка, я имею дело с:
У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' по строке 7
Пожалуйста, [прекратите использование 'mysql_ *' функций] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и подумайте об использовании PDO, [это не так сложно, как вы думаете] (http://jayblanchard.net/demystifying_php_pdo.html) , * Что такое строка 7? * –
Я знаю, что функции mysql_ + устарели, но я следую примерам из книги, так или иначе строка «7» - это строка, в которой ошибка возникает в фрагменте кода – Riccardo
Это НИЧЕГО не имеет отношения к Heredoc. Это ошибка запроса mysql, которую вы получаете от запуска недопустимого запроса. Это результат части 'или die (mysql_error ($ db))'. Я бы предположил, что это третий запрос, потому что это единственный, который имеет длину 7 строк. Вероятно, вы не передаете '$ _GET ['movie_id']' в URL-адресе. –