【发布时间】:2018-01-19 09:01:55
【问题描述】:
我正在尝试使用来自mysqli_multi_query() 的 php 和 ajax 将数据显示到引导数据表(4 列)。
我无法让第二个查询与 UNION 或 INNER JOIN 一起使用。
我不是程序员,几乎可以得到正确的结果,但由于某种原因,第一个查询返回“null”值。
我该如何改变呢?
这是一个日志示例和我的代码:
PHP 注意:未定义的偏移量:第 26 行的 2 PHP 注意:未定义的偏移量:第 27 行上的 3 {"sEcho":1,"iTotalRecords":1,"iTotalDisplayRecords":1,"aaData":{"CommonInverterData":[{"Date":null,"Generated":null,"Export":"0.9921563111569116", "导入":"1.8864974578334937"}
/* Database connection start */
include ('db.php');
$conn = mysqli_connect($hn, $un, $pw, $db) or die("Connection failed: " . mysqli_connect_error());
/* Database connection end */
$sql = "SELECT m.`date`, `day_energy`
FROM `CommonInverterData`
JOIN ( SELECT `date`, MAX(`time`) 'maxtime'
FROM `CommonInverterData`
GROUP BY `date`) m
ON m.maxtime = `CommonInverterData`.`time`
AND m.`date` = `CommonInverterData`.`date`;";
$sql .= "SELECT ABS(SUM((CASE WHEN `P_Grid`<0 THEN `P_Grid` ELSE 0 END) / 60000 )) as 'Export', SUM((CASE WHEN `P_Grid`>=0 THEN `P_Grid` ELSE 0 END) / 60000 ) as 'Import' FROM `PowerFlowRealtimeData` GROUP BY `date`;";
if (mysqli_multi_query($conn, $sql) or die(mysqli_error($conn))) {
do {
if ($result=mysqli_store_result($conn)) {
$data = array();
while( $rows = mysqli_fetch_row($result) ) {
$data[] = array(
'Date' => $rows[2],
'Generated' => $rows[3],
'Export' => $rows[0],
'Import' => $rows[1],
);
} mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
}
mysqli_close($conn);
$return = array(
"sEcho" => 1,
"iTotalRecords" => count($data),
"iTotalDisplayRecords" => count($data),
"aaData"=>$data);
echo json_encode($return);
【问题讨论】:
标签: php json mysqli mysqli-multi-query multiple-resultsets