Запись таблицы FOREACH sql получить результат из другой таблицы

Я работаю с форумами vBulletin и пытаюсь получить результаты из одной таблицы, если она существует в другой таблице.

Это создание таблицы данных из

$db->query("ALTER TABLE " . TABLE_PREFIX . "drc_settings ADD thread_ids varchar(50) NOT NULL default '0'");

Я создал поле ввода, предназначенное для номеров, разделенных запятыми (идентификаторы потоков). Это подчиняется этому столбцу, поэтому результат в этом столбце будет выглядеть так:

1,46,23

Другой столбец в этой таблице — это threadid, это тема, из которой было отправлено сообщение.

Итак, это то, что мы имеем в таблице drc_settings

threadid  thread_ids
5       1,46,23

Теперь существует еще одна таблица — thread, в таблице thread у нас есть:

threadid  title
46     Some Title

Что мне нужно знать, как я могу получить заголовок из потока, если thread_ids или drc_settings соответствуют threadid потока?

Это то, где я нахожусь с этим, но я немного вне своего элемента в этом.

$res = $post['thread_ids'];
$res = explode (',', $res);
$post['drcid'] = '<ul>';

foreach ( $res as $ret ) {
$db->query("SELECT
thread.threadid, drc.threadid AS threadid,
thread.threadid, thread.title AS threadtitle
FROM " . TABLE_PREFIX . "thread AS thread
LEFT JOIN " . TABLE_PREFIX . "drc_settings AS drc ON (drc.threadid=thread.threadid)
WHERE thread.threadid VAR (" . $ret . ")
");
$post['drcid'] .= '<li><a href="showthread.php?t=' . $ret . '">'.   $thread[threadtitle] .'</a></li>';
}
$post['drcid'] .= '</ul>';

Если я удалю запрос из foreach, я смогу получить $ res для возврата 1 46 23
что озадачивает меня, почему запрос не работает должным образом.

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

  • Некоторое название
  • Другая тема
  • Название темы

Это ошибка, возвращенная с текущей настройкой, которую я имею

Database error in vBulletin 3.8.9:

Invalid SQL:

SELECT
thread.threadid, drc.threadid AS threadid,
thread.threadid, thread.title AS threadtitle
FROM thread AS thread
LEFT JOIN drc_settings AS drc ON (drc.threadid=thread.threadid)
WHERE thread.threadid VAR (1);

MySQL Error   : You have an error in your SQL syntax;

1

Решение

Используя $ ret (родительский нить) …

$query="SELECT B.threadid,B.title
FROM drc.settings A
LEFT JOIN thread B
ON FIND_IN_SET(B.threadid,A.threadids)
WHERE A.threadid={$ret};"

Затем выполните цикл по результирующему набору, чтобы создать массив $ post.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector