#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, добавил некоторые подробности в мой ответ о том, как сгруппировать два вывода.