簡體   English   中英

查詢在SQL中有效但在PHP中無效

[英]Query that works in SQL but not in PHP

我遇到了一個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',但這只會讓錯誤在錯誤結果中顯示''這個值。 問題依然如故。 添加學生重點也沒有幫助。 在發布我的問題之前,我做了一些試驗和更多的嘗試。

如果有幫助,使用的代碼的最后部分如下:

$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>";

你正在檢查!$res ,應該是!$result

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

我想,你在某處echo()查詢並從瀏覽器中復制粘貼它。 可能是$userid包含xml標簽嗎? 它們不會顯示在瀏覽器中,您必須查看頁面源以發現它們。

你應該用引用的$ userid進行測試,並在兩個語句周圍加括號。

我假設rated_user_id是一個數字字段,但賣家是什么類型的? 如果它是一個字符字段,則必須引用$ userid作為streetpc建議。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM