我在插入一段 PHP 代码以检索某些数据的 SQL 查询时遇到问题。查询本身在 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>";
最佳答案
你正在检查!$res
,它应该是!$result
:
$result = mysql_query($sql);
if (!$result) {
die('Error: ' . mysql_error() . ' in query ' . $sql);
}
关于php - 在 SQL 中有效但在 PHP 中无效的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1015041/