好的,我有两个左连接的表。让表一个“人”和第二个表“狗”。我已经通过id离开了表格:
"SELECT * FROM people
LEFT JOIN dog ON people.PK = dog.fk";
我的问题是两个表都有一个列标题“name”。当我回显出$ _POST ['name']变量时,它为我尝试过的两个字段赋予相同的值
echo $_POST['people.name']
echo $_POST['dog.name']
但这并没有返回任何数据,所以这一定是不正确的。有人可以帮助我解决我的问题,而无需更改我的列名称。谢谢你。
答案 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
列的值。