我花了几个小时来梳理这个网站和网络来解决我的问题。我确定这是一个语法问题,而且这是一个简单的修复。在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查询中的更改会输出数据行。任何帮助将不胜感激。
答案 0 :(得分:2)
您无需在此处使用mysqli_multi_query
。即使您使用子选择,这仍然只是一个查询,只有一个结果集可用于mysqli_query()
。如果要使用mysqli_multi_query
,则需要使用mysqil_use_result()
或mysqli_store_result()
来处理结果集。
此外,您应该养成在使用数据库时实际检查和记录错误的习惯。在您开始尝试使用$results
之前,您甚至不必检查它是否包含结果集的有效资源。