Как получить информацию сразу из 2 таблиц в PHP и MySQL?

#php #mysql #join

#php #mysql #Присоединиться

Вопрос:

 <?php 

include('includes/config.php');
$topi = $_GET['id']; //id of url

mysql_select_db("ban", $con);

$query = "SELECT * FROM `basic` WHERE id = '$topi' LIMIT 0, 30"; 

$result = mysql_query($query) or die(mysql_error());

$row = mysql_fetch_array($result) or die(mysql_error());

$aa = $row['item'];
$cc = $row['moreinfo'];
$dd = $row['contactinfo'];
$ff = $row['id'];
  

В этом скрипте я получаю информацию из таблицы basic , но я хочу извлечь данные из другой таблицы с именем users . Как я могу получить данные из двух таблиц одновременно?

users таблица состоит из следующих столбцов:

  • Адрес электронной почты
  • Имя пользователя
  • ID

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

1. Пожалуйста, опубликуйте структуру вашей users таблицы. Какие столбцы в нем есть?

2. @michael электронная почта, имя пользователя и идентификатор являются столбцами

3. @Chamara Denipitiya Связан ли ID столбец с basic.id ?

4. @Chamara Denipitiya Хорошо, я добавил пример к своему ответу ниже.

5. Отступ в этом коде кажется настолько случайным, я предполагаю, что он, должно быть, скрывает какое-то секретное сообщение.

Ответ №1:

Вам нужно JOIN использовать для двух таблиц общее значение, называемое внешним ключом. Как только вы опубликуете структуру users таблицы, как указано в комментариях, я могу предоставить более полный пример.

РЕДАКТИРОВАТЬ: Смотрите пример. Это вызывает явные имена столбцов вместо SELECT * .

 $query = "SELECT 
    basic.id,
    basic.item,
    basic.moreinfo,
    basic.contactinfo,
    users.email,
    users.username
  FROM basic JOIN users ON basic.id = users.id
  WHERE id   = '$topi'
  LIMIT 0 , 30"; 
  

Ответ №2:

Вы бы использовали соединение с другой таблицей.

 $query = "SELECT *
FROM basic b
JOIN users u ON b.user_id = u.user_id
WHERE id = '$topi'
LIMIT 0, 30";
  

Что-то вроде этого, но на основе ваших полей.

Пожалуйста, обратите внимание: предложение ON указывает, по чему вы будете искать совпадение.