我在插入一段PHP代碼以檢索某些數據的SQL查詢時遇到問題。查詢本身在SQL中完美工作,但是當我在我的PHP腳本中使用它時,它會說「查詢中的錯誤」,然後講述整個SQL語句。如果我將錯誤消息中的SQL語句直接複製並粘貼到MySQL中,它將毫無錯誤地運行。在SQL中但不在PHP中工作的查詢
從我的研究中我相信我在某處丟失了一個撇號,所以PHP可能會混淆這些子句,但我沒有足夠的經驗知道將它們插入到哪裏。
該查詢使用的是PHP腳本中前面指定的名爲$ userid的變量。
$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>";
有趣和常見的錯誤:) – Dor 2011-07-24 00:21:47