У меня проблемы с запросом SQL, который я вставил в фрагмент кода PHP для получения некоторых данных. Сам запрос отлично работает в SQL, но когда я использую его в своем PHP-скрипте, он говорит «Ошибка в запросе», а затем цитирует весь оператор SQL. Если я скопирую и вставлю оператор SQL из сообщения об ошибке непосредственно в MySQL, он будет выполнен без ошибок.
Из моих исследований я считаю, что где-то пропущен апостроф, поэтому PHP может сбивать с толку предложения, но у меня недостаточно опыта, чтобы знать, куда их вставить.
В запросе используется переменная $ userid, которая указана ранее в сценарии PHP.
$sql= <<<END
SELECT sum(final_price)
FROM (
SELECT Table_A.rated_user_id, Table_B.seller, Table_B.final_price
FROM Table_A
INNER JOIN Table_B ON Table_A.id=Table_B.id
) AS total_bought
WHERE seller != $userid
AND rated_user_id = $userid
UNION ALL
SELECT sum(final_price)
FROM (
SELECT Table_A.rated_user_id, Table_C.seller, Table_C.final_price
FROM Table_A
INNER JOIN Table_C ON Table_A.id=Table_C.id
) AS total_bought
WHERE seller != $userid
AND rated_user_id = $userid
END;
После этого раздела сценарий затем определяет выходные данные и выводит необходимые фрагменты, как обычно. Я доволен последней частью кода, так как он работает в другом месте, но проблема, с которой я столкнулся, кажется, находится в разделе выше.
Может кто-нибудь заметить ошибку?
Отредактировано для добавления следующей дополнительной информации:
Все поля являются числовыми значениями, ни одно из которых не является текстовым. Я попытался поместить '$ userid', но это только заставляет ошибку отображать '' вокруг этого значения в результатах ошибки. Вопрос остается тем же. Добавление родительских слов также не помогло. Я сделал несколько проб и ошибок, прежде чем опубликовать свой вопрос.
Если это поможет, последняя часть используемого кода bieng выглядит следующим образом:
$result = mysql_query($sql);
if (!$res) {
die('Error: ' . mysql_error() . ' in query ' . $sql);
}
$total_bought = 0;
while ($row = mysql_fetch_array($result)) {
$total_bought += $row[0];
}
$total_bought = number_format($total_bought, 0);
echo '<b>Your purchases: ' . $total_bought . '</b>';
echo "<b> gold</b>";