mysql — скрипт php, измените запись в файл для JSON

У меня есть PHP-скрипт, который в основном работает правильно. На самом деле запросы отличные, но моя единственная проблема на данный момент заключается в части JSON.

В конце моего сценария ниже у меня есть цикл, который обрабатывает мой $data оператор в виде массива и записывает это в файл JSON, но теперь это проблема для меня по нескольким причинам.

  1. теперь данные должны поступать из нескольких таблиц, а не только из оператора select
  2. Мне нужно немного изменить формат JSON, с примерами ниже.

В настоящее время массив содержимого и цикл while просто извлекают элементы данных, $dиз этого оператора select, а затем записывает массив в файл json. Тем не менее, теперь у меня есть $stmt2 который обновляет мою таблицу с помощью идентификатора из другой таблицы, поэтому он не включается в оператор выбора, и мне нужно, чтобы он был в файле JSON. Я не знаю, как бы я это сделал, если бы я мог использовать другой цикл.

Еще один вариант, который мне нужен, заключался в том, чтобы этот сценарий выполнял все запросы, а после завершения просто выгрузил таблицу jfi.ambitionphone к файлу JSON, возможно, ограничив его только записями на сегодняшнюю дату.

Другая незначительная проблема заключается в том, что записываемый в данный момент JSON форматируется следующим образом:

    {
"0": {
"extension": "7200",
"Total_Talk_Time_seconds": "62",
"Total_Talk_Time_minutes": "1.03",
"Total_Outbound": "0",
"Total_Inbound": "0",
"Total_Missed": "1",
"Total_Calls": "1",
"Time_of_report": "2017-09-05 09:55:54",
"Date_of_report": "2017-09-05"},  ......

Когда мне это нужно, вот так:

    [
{
"ExtID" : 75,
"Extension" : 7218,
"Total_Talk_Time_seconds" : 1495,
"Total_Talk_Time_minutes" : 24.92,
"Total_Inbound" : 10,
"Total_Outbound" : 1,
"Missed_Calls" : 4,
"Total_Calls" : 11,
"Date_of_report" : "2017-08-15",
"Time_of_report" : "2017-08-15 16:13:30"},  .......

Итак, основная проблема в настоящее время заключается в том, что мне нужно, чтобы мой файл JSON включал то, что уже записано в цикле ниже, но теперь мне нужно добавить (после «расширения») ExtID из $stmt2

Вот сам скрипт:

 <?php
$data = mysqli_query($conn, " SELECT c.extension
, sum(Duration) AS Total_Talk_Time_seconds
, round(sum(Duration) / 60,2) AS Total_Talk_Time_minutes
, sum(if(LEGTYPE1 = 1,1,0)) AS Total_Outbound
, sum(if(LEGTYPE1 = 2,1,0) and ANSWERED = 1) AS Total_Inbound
, sum(if(Answered = 1,0,1)) AS Total_Missed
, SUM(IF(LEGTYPE1 = 1, 1, 0)) +                   -- outbound
SUM(IF(LEGTYPE1 = 2, 1, 0) AND ANSWERED = 1) +  -- inbound
SUM(IF(Answered = 1, 0, 1))  AS Total_Calls
, NOW() AS Time_of_report
, curdate() AS Date_of_report
FROM cdrdb.session a
INNER JOIN cdrdb.callsummary b
ON a.NOTABLECALLID = b.NOTABLECALLID
INNER join cdrdb.mxuser c
ON a.RESPONSIBLEUSEREXTENSIONID = c.EXTENSIONID
WHERE b.ts >= curdate()
AND c.extension IN (7276,7314,7295,7306,7357,7200,7218,7247,7331,7255,7330,7000,7215,7240,7358,7312)
group by c.extension")  or die(mysqli_error( $conn));$stmt = mysqli_prepare($conn2, "Insert into jfi.ambitionphone(Extension,       Total_Talk_Time_seconds, Total_Talk_Time_minutes, Total_Outbound, Total_Inbound,
Missed_Calls, Total_Calls, Date_of_report,Time_of_report )
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
ON duplicate key update
Total_Talk_Time_seconds = values(Total_Talk_Time_seconds),
Total_Talk_Time_minutes = values(Total_Talk_Time_minutes),
Total_Inbound = values(Total_Inbound),
Total_Outbound = values(Total_Outbound),
Missed_Calls = values(Missed_Calls),
Total_Calls = values(Total_Calls),
Time_of_report = NOW()
") or die(mysqli_error( $conn2));

$stmt2 = mysqli_prepare($conn2, "UPDATE jfi.ambitionphone a,
(SELECT * FROM jackson_id.users where id in

(48,75,76,77,81,82,83,85,86,87,99341,99344,99409,99422,99428)) j
SET a.ExtID = j.id where a.extension = j.extension") or die(mysqli_error($conn2));

echo print_r($stmt);

// Create the main array
$content = [];

while ($d = mysqli_fetch_array($data, MYSQLI_ASSOC)) {

mysqli_stmt_bind_param($stmt,"iidiiiiss", $d['extension'],
$d['Total_Talk_Time_seconds'], $d['Total_Talk_Time_minutes'],
$d['Total_Outbound'], $d['Total_Inbound'], $d['Total_Missed'], $d['Total_Calls'],
$d['Time_of_report'], $d['Date_of_report']) ;
mysqli_stmt_execute($stmt) or die(mysqli_error($conn2));

// Store the current row
$content[] = $d;

}

mysqli_stmt_execute($stmt2) or die(mysqli_error($conn2));// Store it all
file_put_contents('ambitionLog.json', json_encode($content, JSON_PRETTY_PRINT | JSON_FORCE_OBJECT));

?>

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector