Подготовленное Mysqli утверждение: сохраняйте строки в массиве и затем просматривайте этот массив

0

Я использую подготовленный оператор для выбора строк в базе данных. Впоследствии я хотел бы повторить отдельные строки, используя цикл 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'];
}
  • 0
    FYI: mysqli_result::fetch_all существует, так что ваш в while цикл своего рода ненужный.
Теги:
arrays
while-loop
mysqli

1 ответ

0
Лучший ответ

Вот как это необходимо сделать

 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=?
  • 0
    Эй, спасибо за ваш ответ! Я не знаком с этим способом выполнения запроса, но, кажется, имеет смысл. Однако users.name содержит имена пользователей, а replies.userID содержит идентификаторы пользователей, которые никогда не совпадают. Если я запускаю такой код, моя страница остается пустой. Есть ли шаг, который я пропускаю?
  • 0
    Вам нужен итератор идентификаторов вместо результатов, так как идентификаторы теперь находятся в массиве IDS
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню