Я использую подготовленный оператор для выбора строк в базе данных. Впоследствии я хотел бы повторить отдельные строки, используя цикл while. Это работало нормально, пока я не попытался использовать новый запрос в ходе цикла while (это было необходимо, потому что я извлекал идентификатор пользователя, который мне нужно преобразовать в имя пользователя. Я сделал это, выполнив запрос в таблице пользователей, но когда я пытаюсь это сделать, мой код не запускается). Я думал, что могу исправить это, сохранив все строки в массиве, а затем в моем цикле кода через этот массив. Тем не менее, я не могу понять, как прокручивать все индексы этого массива и извлекать все поля строки в каждом экземпляре цикла.
Большое спасибо! Вот мой код:
$results = array();
$stmt = $db->prepare("SELECT admissionID,userID,description,link,postingdate,compensation FROM replies WHERE projectID=?");
$stmt->bind_param('i',$projectID);
$stmt->execute();
$stmt->bind_result($admissionID,$userID,$description,$link,$postingdate,$compensation);
while($row = $stmt->fetch()){
$results[] = $row;
}
foreach($results as $result) {
echo $result['admissionID'];
}
Вот как это необходимо сделать
ids=array();
while($row = $stmt->fetch()){
ids[]= $row['userID'];
}
ids - это массив и будет иметь все необходимые идентификаторы. Но я бы сказал: "Не делай этого так", просто используйте соединение таблицы, чтобы получить имя пользователя, например, может быть, ваше дело будет похоже на
SELECT replies.admissionID,users.name,replies.userID,replies.description,
replies.link,replies.postingdate,replies.compensation FROM replies, users
WHERE
users.name=replies.userID
and replies.projectID=?
mysqli_result::fetch_all
существует, так что ваш вwhile
цикл своего рода ненужный.