在SQL中但不在PHP中工作的查询

问题描述:

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

我想,你是echo()地方荷兰国际集团的查询和复制粘贴从浏览器吧。难道$userid包含xml标签吗?它们不会显示在浏览器中,您将不得不查看页面源以发现它们。

您应该使用$ userid进行测试,并在两个语句周围加上括号。

我假设rated_user_id是一个数字字段,但是卖方是什么类型?如果是字符字段,则$ userid必须按照streetpc的建议引用。

另一件要检查的是,对于查询的每一行,行结束后至少有一个空格。这让我绊倒了。有时,当从编辑器/ IDE转到数据库工具时,这些问题会被默默地处理。

你检查!$res,它应该是!$result

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

有趣和常见的错误:) – Dor 2011-07-24 00:21:47