phpmyadmin返回查询结果但php返回0

时间:2014-01-22 00:34:03

标签: php mysql sql phpmyadmin

我花了几个小时来梳理这个网站和网络来解决我的问题。我确定这是一个语法问题,而且这是一个简单的修复。在phpmyadmin中运行以下查询时,我得到了所需的结果。我正在加入两张桌子并显示每张桌子的总和。我使用phpmyadmin生成PHP代码但返回0行。将php中的SELECT查询更改为一个简单的行,该行仅收集来自一个表的总和和记录,输出多行。只有当我使用来自更高级查询的多个SELECTS时才会得到结果。

SELECT
od.orderID,
od.owed,
od.freight,
op.paid
FROM
(
    SELECT
        acct,
        orderID,
        SUM(price * qty) AS owed,
    freight
    FROM
        old_details
    GROUP BY
        orderID
) AS od
INNER JOIN (
    SELECT
        orderID,
        SUM(payment) AS paid
    FROM
        old_payment
    GROUP BY
        orderID
) AS op ON (op.orderID = od.orderID)
WHERE od.acct='AS3576E'

PHP脚本是......

<?php

include_once "connect.php";

$cID = 'AS3576E';


$query = "SELECT od.orderID, od.owed, od.freight, op.paid
FROM ( SELECT acct, orderID, SUM(price * qty) AS owed, freight
FROM old_details
GROUP BY orderID ) AS od
INNER JOIN (
SELECT orderID, SUM(payment) AS paid
FROM old_payment
GROUP BY orderID ) AS op ON (op.orderID = od.orderID)
WHERE od.acct='$cID'";

$line=0;

$results = mysqli_multi_query($link, $query);

while($row=mysqli_fetch_array($results)){
echo "oid$line=$row[orderID]&";
echo "odate$line=$row[invDate]&";
echo "oowed$line=$row[owed]&";
echo "opaid$line=$row[paid]&";
echo "ofreight$line=$row[freight]&";

$line++;
}


echo "line=$line";


mysqli_close($link);

?> 

我尝试过mysqli_multi_query和mysqli_query。我尝试了很多不同的调整。连接到数据库没有问题,因为php查询中的更改会输出数据行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您无需在此处使用mysqli_multi_query。即使您使用子选择,这仍然只是一个查询,只有一个结果集可用于mysqli_query()。如果要使用mysqli_multi_query,则需要使用mysqil_use_result()mysqli_store_result()来处理结果集。

此外,您应该养成在使用数据库时实际检查和记录错误的习惯。在您开始尝试使用$results之前,您甚至不必检查它是否包含结果集的有效资源。