[英]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.