PHP echo同名的POST变量

时间:2012-01-05 01:25:34

标签: php mysql post echo

好的,我有两个左连接的表。让表一个“人”和第二个表“狗”。我已经通过id离开了表格:

"SELECT * FROM people
      LEFT JOIN dog ON people.PK = dog.fk"; 

我的问题是两个表都有一个列标题“name”。当我回显出$ _POST ['name']变量时,它为我尝试过的两个字段赋予相同的值

echo $_POST['people.name']
echo $_POST['dog.name']

但这并没有返回任何数据,所以这一定是不正确的。有人可以帮助我解决我的问题,而无需更改我的列名称。谢谢你。

2 个答案:

答案 0 :(得分:1)

别名列名称,不要使用SELECT *,而是手动指定列:

SELECT people.name AS people_name, dog.name AS dog_name
FROM people
LEFT JOIN dog ON people.PK = dog.fk

然后,您可以通过['people_name']['doc_name']访问这些字段 根据您的表格结构和您实际需要的字段,您还可以SELECT table1.*, table2.somecol AS t2_somecol - 如果您需要第一个表格中的所有内容,而只需要第二个表格中的几个字段,那么这将非常方便。

哦,你真的不应该把东西放进$_POST。这意味着由PHP填充POST数据 - 来自您的数据库的数据实际上不是POST数据。

答案 1 :(得分:1)

$_POST超全球包含从表单提交的数据。它不包含数据库查询的数据。你可能会做这样的事情(伪代码):

$result = database_query (
    "SELECT * FROM people LEFT JOIN dog ON people.PK = dog.fk"
);

您想要的数据现在包含在名为$result的变量中。如何访问它将取决于您的数据库访问方法,但通常您将从结果对象中获取一行,可能作为关联数组。

$row = database_fetch_assoc($result);

然后数组$row将包含您的数据。

echo $row['name'];

您可能需要在查询中为列名设置别名,以便能够访问两个name列的值。