Мне приходится решать проблему, связанную с кодом на 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>
Ты не должен звонить 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);
?>
Других решений пока нет …