#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 извините, что вводит в заблуждение, но моя автозамена подставила меня в этом вопросе, что «должно» было быть не должно, вы абсолютно правы. 😅