2016-04-16 53 views
-2

怎么办如果MySQL表的名字是改则链接名称变更

如果表名更改然后链接名称更改

例如我有两个表与工会

$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表结果发现,然后链接显示租用

echo "<a href='rent_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>"; 

我怎么能做到这一点 帮我解决这个问题

感谢

+0

这两张表的结构是什么? – naf4me

+0

你试过左连接吗?即使在其他表中找不到一个值,左连接也会显示所有结果 –

回答

0

我花了4读取到弄清楚你想做什么,但我认为我终于明白了

你sh应该在你的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"; 

那么C和做类似

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>";                           
} 
0

您可以使用类似的东西在你的查询:

$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) 
); 

但是,这看起来像某种类型的黑客。一个典型的情况是,应该仔细查看数据库方案并询问是否存在问题。如果它们具有相同的结构和语义,为什么这些条目不在同一个表中?