如果更改了mysql表名,则链接名称将更改

时间:2016-04-16 08:05:52

标签: php mysql sql

如何做

如果表名更改,则链接名称将更改

示例我有两个带联合的表

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

我该怎么办? 帮我解决这个问题

感谢

2 个答案:

答案 0 :(得分:0)

我花了4次读数来确定你想做什么,但我认为我终于理解了

你应该添加一个&#34;标记&#34;在你的2 SELECT中,以便知道行来自哪个表。

在下面的例子中,我将&#34;标记'#34;作为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>";                                                                                                           
}

答案 1 :(得分: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)
);

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