php - 在 SQL 中有效但在 PHP 中无效的查询

标签 php sql mysql

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

相关文章:

php - mySql为购物车选择多个可能重复ID的ID

mysql - 如何插入带有引用复合键的外键的行

sql - 具有递归的 CTE - row_number() 聚合

php - 如何从 laravel 的菜单中获取餐厅的平均价格?

MySQL计算时间差,其中列有特定值?

php - PHP和SEO认证

php - Guzzle - 如何设置 json 标题?

不带前导零的 SQL 唯一索引

php - 万事达卡支付集成服务无法在 PHP 中运行

mysql - 获取mysql表中项目的百分比计算