如何进行
如果表名称更改,则链接名称更改
例如,我有两张带有联合的桌子
$constructs ="(SELECT * FROM sales_media WHERE user_name='$row->user_name')
UNION
(SELECT * FROM rent_media WHERE user_name='$row->user_name')
ORDER BY City DESC, ID DESC";
假设它同时显示两个表的结果如果找到sales_media表结果,则链接显示销售
像这个
echo "<a href='sales_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>";
如果找到rent_media表结果,则链接显示rent
echo "<a href='rent_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>";
我该怎么做帮助我解决这个问题
感谢
我读了4遍才明白你想做什么,但我想我终于理解了
您应该在2 SELECT
中添加一个"标记",以便知道行来自哪个表。
在下面的示例中,我将"标记"别名为typerow
$constructs ="(SELECT 'sales_row' AS typerow, * FROM sales_media WHERE user_name='$row->user_name')
UNION
(SELECT 'rent_row' AS typerow, * FROM rent_media WHERE user_name='$row->user_name')
ORDER BY City DESC, ID DESC";
然后你可以做一些类似的事情
if ($row->typerow=='sales_row'){
echo "<a href='sales_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>";
}else{
echo "<a href='rent_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>";
}
您可以在查询中使用类似的东西:
$constructs <<<EOT
(SELECT 'sales' AS type, * FROM sales_media WHERE user_name='{$row->user_name}')
UNION
(SELECT 'rent' AS type, * FROM rent_media WHERE user_name='{$row->user_name}')
ORDER BY City DESC, ID DESC"
EOT;
这样,您就可以在结果集中的每一行中看到该条目来自哪个表。现在很容易实现基于该信息的条件:
echo sprintf(
'<a href="%s_%s-%s.html">%s</a></div>',
$newRow['type'],
urlencode(str_replace(' ', '_', $project_title)),
$id,
htmlescape($project_title)
);
然而,这看起来像是某种黑客攻击。一种典型的情况是,人们应该仔细查看数据库方案,并询问是否存在问题。如果这些条目具有相同的结构和语义,为什么它们不保存在同一个表中?