Проблема с получением данных из временной таблицы MySQL

#php #mysql #json #mysqli

#php #mysql #json #mysqli

Вопрос:

У меня возникла проблема с получением данных json из временной таблицы. Как вы можете видеть, я попытался сгенерировать временную таблицу charts_econo в $query2 , а во втором файле я попытался разобрать таблицу в JSON, но я ничего не получаю при запуске первого PHP (createTemp.php ) и, в конечном счете, второй(testTemp.php ).

Вот мой createTemp.php

 <?PHP
include 'conconfig.php';
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$collm = $_POST['column'];
$query = "SELECT x, y  FROM  econo WHERE ".$collm."=1";
$results = $con->query($query);
$return = array();
if($results) {
while($row = $results->fetch_assoc()) {
    $return[] = array((float)$row['x'],(float)$row['y']);
}
}
$query2 = "CREATE TEMPORARY TABLE IF NOT EXISTS `charts_econo` (
          `econo_sum_projects` decimal(12,7) NOT NULL,
          `econo_sum_powerline` decimal(12,7) NOT NULL,
          `econo_sum_roads` decimal(12,7) NOT NULL,
          `econo_sum_cost` decimal(12,7) NOT NULL
          ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AS(SELECT COUNT(project),
                                                   SUM(powerline_length),
                                                   SUM(road_length),
                                                   SUM(cost_per_year)
                                                   FROM econo WHERE $collm=1;";
$con->query($query2);
$con->close();
echo json_encode($return);
?>
  

и это testTemp.php

 <?PHP
include 'conconfig.php';
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$query = "SELECT *  FROM `charts_econo`";
$results = $con->query($query);

if($results) {
while($row = $results->fetch_assoc()) {
$json= json_encode($row);
   }
}
$con->close();
echo $json;
?>
  

Ответ №1:

Из документации mysql:

ВРЕМЕННАЯ таблица видна только для текущего сеанса и автоматически удаляется при закрытии сеанса.

Итак, второй скрипт (в большинстве случаев) не может получить доступ к таблице, созданной первым! Вам придется запросить его и вывести JSON в первом скрипте или вывести результат SELECT из CREATE TEMPORARY TABLE в первом скрипте непосредственно в любом скрипте (т. Е. Не использовать какую-либо временную таблицу).

Для вывода обоих в одном JSON вы можете создать массив обоих:

 echo json_encode([$results1, $results2]);
  

Или ассоциативный массив / объект:

 echo json_encode({'results1':$results1, 'results2':$results2});
  

Это меняет способ, которым клиент получит доступ к каждой части после декодирования:

 decoded_json[0]
  

или

 decoded_json['results1']
  

Комментарии:

1. Спасибо, jcaron, но не могли бы вы сообщить мне, как экспортировать два объекта json из одного PHP? Я имею в виду, как вы можете видеть из createTemp.php Я уже повторяю json_encode ($return); (который я должен сохранить) итак, как я могу экспортировать другой?

2. @MonaCoder, добавил некоторые подробности в мой ответ о том, как сгруппировать два вывода.