同名的PHP echo POST变量

同名的PHP echo POST变量,php,mysql,post,echo,Php,Mysql,Post,Echo,好的,我有两个左连接的表。让我们称第一桌为“人”,第二桌为“狗”。我已通过id离开并加入表: "SELECT * FROM people LEFT JOIN dog ON people.PK = dog.fk"; 我的问题是两个表都有一个列标题“name”。当我回显$\u POST['name']变量时,它为我尝试的两个字段提供了相同的值 echo $_POST['people.name'] echo $_POST['dog.name'] 但这不会返回任何数据,因此这肯定是错误

好的,我有两个左连接的表。让我们称第一桌为“人”,第二桌为“狗”。我已通过id离开并加入表:

"SELECT * FROM people
      LEFT JOIN dog ON people.PK = dog.fk"; 
我的问题是两个表都有一个列标题“name”。当我回显$\u POST['name']变量时,它为我尝试的两个字段提供了相同的值

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

但这不会返回任何数据,因此这肯定是错误的。有人能帮我解决问题而不必更改我的列名吗。谢谢。

为列名添加别名,不要使用
选择*
,而是手动指定列:

SELECT people.name AS people_name, dog.name AS dog_name
FROM people
LEFT JOIN dog ON people.PK = dog.fk
然后您可以通过
['people\u name']
['doc\u name']

根据您的表结构和实际需要的字段,您还可以
选择table1.*,table2.somecol AS t2_somecol
——如果您需要第一个表中的所有内容,但只需要第二个表中的几个字段,那么这将非常方便


哦,你真的不应该把东西放到
$\u POST
里。它意味着由PHP填充POST数据,而来自数据库的数据并不是真正的POST数据。

超级全局的
$\u POST
包含从表单提交的数据。它不包含来自数据库查询的数据。您可能会执行以下操作(伪代码):

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

$row = database_fetch_assoc($result);
然后数组
$row
将包含您的数据

echo $row['name'];

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

我不这么认为。对我来说,由于同一字段名被使用了两次,他的SQL结果似乎被“破坏”,并且由于某种原因,他将其存储在
$\u POST
+1中,因为我正是在键入此内容。但是我会添加反勾号来引用字段。不需要使用反勾号。只有当您想使用其他保留关键字作为列/表名时,才需要它们,为了使SQL更具可读性,最好避免使用这些保留关键字。@ThiefMaster:您显然没有遇到过mysql人员决定添加一些保留关键字的情况,而您恰好使用了这些保留关键字作为字段名(如果我没记错的话,发生在3-4版中)幸运的是,在下一次升级中,你的整个代码库都是固定的……我不认为他把数据存储在<代码> $POST <代码>中,但是我仍然把这个问题解释为“<代码> $PAST<代码>是什么意思的混淆。但是,我删除了我的下注。你是对的,我写这篇文章是一个假设的,只是使用过的帖子,没有想到它。ough.Yes将使用$row或类似的东西,并且必须为列添加别名。谢谢。
echo $row['name'];