PHP эхо-переменная POST с тем же именем - PullRequest
0 голосов
/ 05 января 2012

Хорошо, у меня есть две таблицы с левым соединением.Пусть назовем стол один «человек», а второй стол «собака».Я оставил объединенные таблицы с идентификатором:

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

Моя проблема заключается в том, что обе таблицы имеют заголовок столбца «имя».Когда я возвращаю переменную $ _POST ['name'], она дает одинаковое значение для обоих полей, которые я пробовал

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

, но это не возвращает никаких данных, поэтому это должно быть неправильно.Может ли кто-нибудь помочь мне решить мою проблему, не меняя названия столбцов.Спасибо тебе.

Ответы [ 2 ]

1 голос
/ 05 января 2012

Суперглобальный $_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.

1 голос
/ 05 января 2012

Псевдоним имен столбцов и не используйте 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.

...