我想顯示數據引導數據表(4列)使用PHP和AJAX從mysqli_multi_query()
。如何從mysqli_multi_query結果集創建json?
我無法獲得與UNION
或INNER JOIN
一起使用的第二個查詢。 我不是程序員,幾乎得到了正確的結果,但由於某種原因,第一個查詢返回「null」值。
我該如何改變這種情況?
下面是一個日誌的示例和我的代碼:
PHP通知:未定義偏移:2,在行26 PHP通知:未定義偏移量:3第27行 { 「sEcho」:1,「iTotalRecords 「:1,」iTalDisplayRecords「:1,」aaData「:{」CommonInverterData「:[{」Date「:null,」Generated「:null,」Export「:」0.9921563111569116「,」Import「:」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);
爲什麼您認爲在這種情況下使用多查詢有意義? –
@YourCommonSense我沒有,但我不會強迫OP的手。我建議使用另一種方法。我對OP的數據結構和查詢不夠了解(或苦於深入研究),足以打擾提供一種特定的選擇。 – mickmackusa
嗨米克馬庫薩,謝謝你的劇本。 你的代碼正在工作,返回4列,但只有1行,這是今天的日期,到目前爲止應該有12行。 – whismerhill