Как получить данные из нескольких таблиц одним запросом, используя php и mysqli?

#php #mysql #mysqli

#php #mysql #mysqli

Вопрос:

Я действительно застрял в тот момент, когда я хотел показать данные из нескольких таблиц, т.Е. в моем случае таблица продуктов и категорий. У меня есть две таблицы, показанные ниже

У меня есть следующий php-код для отображения данных

  <div class="row">
 <?php
 require_once("connection.php");
 $query = "SELECT * FROM categories, products where cat_type = 'import' AND product_cat = cat_name";
 $result=$conn->query($query);
 while($row=$result->fetch_array()){
 ?>
 <div class="col-sm-3">
 <h5><?php echo $row['cat_name'];?></h5>
 <ul>
 <li><a href="category.php"><?php echo $row['product_title'];?></a>
 </li>
 </ul>
 </div>
 <?php } ?>
 </div>
  

Я получаю вывод следующим образом

два заголовка категории для одного и того же cat

Ожидаемый результат Я хочу, чтобы мой выход был таким

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

1. Этот вопрос кажется нерешенным. Можете ли вы предоставить структуру таблицы базы данных для categories and products ? Тогда мы можем легко помочь вам уточнить запрос. … который может включать в себя определенные столбцы в части ВЫБОРА, все прописные ключевые слова и псевдонимы таблиц повсюду.

Ответ №1:

Запрос, как показано ниже

  <?php
  $query = SELECT * FROM categories LEFT JOIN table2 ON categories.id=table2.id where categories.cat_type = 'import' AND categories.product_cat = cat_name";
 ?>
  

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

1. $query = «ВЫБЕРИТЕ * ИЗ категорий СЛЕВА ПРИСОЕДИНИТЬСЯ К продуктам В categories.cat_type=products .product_cat где categories.cat_type = ‘import’ И categories.product_cat = cat_name»; не работает .. что я делаю не так

2. есть ли у вас столбец cat_type в таблице categories, а также product_cat в таблице product? у вас есть категория item в product.product_cat? предоставляющий код в порядке на моем сеансе, поэтому вы снова проверяете свою базу данных и отношение к таблице.

3. И «categories.cat_type=products .product_cat» не размещайте здесь «продукты (вы пишете пробел здесь).product_cat»

Ответ №2:

Соединения соединяют базы данных с одного хоста

<?php $query = SELECT * FROM categories LEFT JOIN table2 ON categories.id=table2.id where categories.cat_type = 'import' AND categories.product_cat = cat_name"; ?>

Приведенный выше код работает нормально.

Какая у вас ошибка?

Еще одна вещь:

Никогда не используйте

while($row=$result->fetch_array()) {
?>


<div>
HTML Code here
</div>
<?php } ?>

Вместо
{
Some HTML
}

используйте echo и выведите свой div там.

Что-то вроде

echo "<div class='col-md-3'>".$row['cat_name']."</div>"

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

1. У меня ошибка при отображении подкатегорий всего, что я добавляю в новую подкатегорию… каждый раз он отображается с заголовком. Я не хочу, чтобы несколько заголовков одной и той же категории, а подкатегория должна входить в основную категорию, как на рис