FOREACH sql table 条目从另一个 table 获取结果
FOREACH sql table entry get result from another table
我正在使用 vBulletin 论坛,我正在尝试从一个 table 获得结果,如果它存在于另一个 table。
这是创建table数据来自
$db->query("ALTER TABLE " . TABLE_PREFIX . "drc_settings ADD thread_ids varchar(50) NOT NULL default '0'");
我创建了一个用于逗号分隔数字(线程 ID)的输入字段。提交到此列,因此此列中的结果如下所示:
1,46,23
此 table 中的另一列是 threadid,这是提交 post 的线程。
这就是我们在 drc_settings table
threadid thread_ids
5 1,46,23
现在存在的另一个table是线程,在线程table中我们有:
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 到 return 1 46 23
这让我很困惑,为什么查询不能正常工作。
最终结果将是输入中指定的每个线程的链接列表,即:
- 一些标题
- 另一个话题
- 主题标题
这是错误return我当前的设置
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;
使用 $ret(父线程 ID)...
$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 数组。
我正在使用 vBulletin 论坛,我正在尝试从一个 table 获得结果,如果它存在于另一个 table。
这是创建table数据来自
$db->query("ALTER TABLE " . TABLE_PREFIX . "drc_settings ADD thread_ids varchar(50) NOT NULL default '0'");
我创建了一个用于逗号分隔数字(线程 ID)的输入字段。提交到此列,因此此列中的结果如下所示:
1,46,23
此 table 中的另一列是 threadid,这是提交 post 的线程。
这就是我们在 drc_settings table
threadid thread_ids
5 1,46,23
现在存在的另一个table是线程,在线程table中我们有:
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 到 return 1 46 23 这让我很困惑,为什么查询不能正常工作。
最终结果将是输入中指定的每个线程的链接列表,即:
- 一些标题
- 另一个话题
- 主题标题
这是错误return我当前的设置
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;
使用 $ret(父线程 ID)...
$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 数组。