Как перебирать объекты в JavaScript и переполнение стека

Мне приходится решать проблему, связанную с кодом на JS и PHP. По какой-то причине, всякий раз, когда этот код выполняется, он помещает первую запись во все строки таблицы вместо того, чтобы перебирать каждую запись и помещать их все в строки. Я был бы признателен, если бы кто-то помог мне понять, как решить эту проблему. Можно ли это исправить только с помощью цикла for? Заранее спасибо.

<?php include('../../functions.php');

$query = "SELECT
*
FROM
plobby
LEFT JOIN users ON users.UID = plobby.UID
WHERE
`LID` = '". preg_replace("/[^A-Za-z0-9 ]/", '', $_POST['id']) ."';
";

$sql = "SELECT COUNT(`LID`) AS `x` FROM `snipe`.`plobby` WHERE LID = '".$_POST['id']."';";

$result = $db->query($query);
$rst = $db->query($sql);

$cnt = 0;

if($rst->num_rows > 0)
while($row = $rst->fetch_assoc())
$cnt = $row["x"];

if ($result->num_rows > 0)
for($i = 1;$i<= $cnt;$i++)
echo json_encode($result->fetch_assoc());
else
echo json_encode([]);
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

0

Решение

Ты не должен звонить json_encode() многократно. Ответ должен содержать один объект JSON, а не несколько объектов. Вам нужно поместить все результаты в массив и вызвать json_encode() на этом массиве в конце.

Там также не нужно сначала считать. Просто позвони fetch_assoc() пока вы не получите все результаты.

<?php include('../../functions.php');

$query = "SELECT
*
FROM
plobby
LEFT JOIN users ON users.UID = plobby.UID
WHERE
`LID` = '". preg_replace("/[^A-Za-z0-9 ]/", '', $_POST['id']) ."';
";

$result = $db->query($query);

$rows = [];

while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
echo json_encode($rows);
?>
0

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

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

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