如何从mysqli_multi_query结果集创建json?

时间:2017-08-11 00:04:00

标签: php json mysqli mysqli-multi-query multiple-resultsets

我正在尝试使用来自mysqli_multi_query()的php和ajax来显示数据以引导数据表(4列)。

我无法让第二个查询与UNIONINNER JOIN一起使用。 我不是程序员,并设法得到正确的结果,但由于某种原因,第一个查询返回“null”值。

我该如何改变?

这是一个日志示例和我的代码:

  

PHP注意:未定义的偏移量:第26行的2   PHP注意:未定义的偏移量:第27行的3   { “sEcho”:1, “iTotalRecords”:1, “iTotalDisplayRecords”:1, “aaData”:{ “CommonInverterData”:[{ “日期”:空, “生成”:空, “出口”: “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);

0 个答案:

没有答案