Получение значений из разных таблиц внутри оператора цикла while с использованием php

#php #mysql #while-loop

#php #mysql #цикл while

Вопрос:

У меня возникла проблема с извлечением значений из двух разных таблиц. Вот код до сих пор:

 $result = mysqli_query($conn,"SELECT * FROM articles");
$num = mysqli_num_rows($result);

while ($row = mysqli_fetch_array($result)) {
    $uid=$row['_uid'];

    $result2 = mysqli_query($conn, "SELECT _username FROM users WHERE _id = '$uid' ";
    $num2 = mysqli_num_rows($result2);

    while ($row2 = mysqli_fetch_array($result2)) {
        $username = $row2['_username'];
    }
    $divtext='<h3>'.$row['_posttype'].'</h3> <h2>'.$username.' </h2>';
}    
  

Я читал, что я должен предварительно выполнить это, пока внутри, с помощью нескольких запросов, также найденных в w3, что вы можете напрямую присваивать значение переменной напрямую, используя:

 "SELECT _username INTO $username FROM users WHERE  _id = '$uid'  LIMIT 1";    
  

Но это работает в SQL внутри myadmin, в php я не могу найти, как его использовать.
Я также заменил fetch_row на fetch_assoc и до сих пор ничего, я уже два дня борюсь с этим.

Комментарии:

1. Вы должны найти где-нибудь еще для чтения. Первый — опасный код, открытый для внедрения SQL, а второй код вообще не имеет смысла.

Ответ №1:

вы можете выбрать все значения с помощью одного запроса

 SELECT a._uid , a._posttype, u._username 
FROM articles a
INNER JOIN users u on a._uid = u._id 
  

..

 $result = mysqli_query($conn,
  "SELECT a._uid , a._posttype, u._username 
  FROM articles a
  INNER JOIN users u on a._uid = u._id");
$num = mysqli_num_rows($result);

while ($row = mysqli_fetch_array($result)) {

    $divtext='<h3>'.$row['_posttype'].'</h3> <h2>'.$username.' </h2>';

}  

$echo $divtext;
  

Комментарии:

1. @miken32 . исходный код .. выберите все статьи и для каждой статьи выполните команду select for user .. это выполняется как в одном запросе .. не нужен (в данном случае) запрос параметров..

2. Спасибо @scaisEdge Я только что попробовал и работает. miken32 извините, что вводит в заблуждение, но моя автозамена подставила меня в этом вопросе, что «должно» было быть не должно, вы абсолютно правы. 😅