2009-06-18 84 views
2

我在插入一段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>"; 

回答

0

我想,你是echo()地方荷蘭國際集團的查詢和複製粘貼從瀏覽器吧。難道$userid包含xml標籤嗎?它們不會顯示在瀏覽器中,您將不得不查看頁面源以發現它們。

0

您應該使用$ userid進行測試,並在兩個語句周圍加上括號。

0

我假設rated_user_id是一個數字字段,但是賣方是什麼類型?如果是字符字段,則$ userid必須按照streetpc的建議引用。

另一件要檢查的是,對於查詢的每一行,行結束後至少有一個空格。這讓我絆倒了。有時,當從編輯器/ IDE轉到數據庫工具時,這些問題會被默默地處理。

8

你檢查!$res,它應該是!$result

$result = mysql_query($sql); 
if (!$result) { 
    die('Error: ' . mysql_error() . ' in query ' . $sql); 
} 
+0

有趣和常見的錯誤:) – Dor 2011-07-24 00:21:47

相關問題