MYSQL определить определенный столбец в массиве mysql_query? - PullRequest
0 голосов
/ 13 января 2012

Когда я выбираю из нескольких таблиц, которые имеют общие имена столбцов, есть ли способ вернуть обе, но определить, из какой из них я хочу выбрать данные?

Например: обе таблицы содержат датустолбцы, и я хочу использовать оба, но я хотел бы избежать переименования каждого столбца с повторяющимися именами.

 $query = mysql_query("SELECT * FROM posts, comments"); //(SELECT * is just for example)
 while($row=mysql_fetch_array($query))
 {
     $postDate = $row['date'];  //I would like to be able to do something like:
                                //$postDate = $row['posts']['date']; OR $row['posts.date'];
                                //of course it's all in an array now, jumbled up.
     $commentDate = $row['date']; 
 }

Ответы [ 3 ]

5 голосов
/ 13 января 2012

Вам нужно присвоить псевдониму повторяющиеся имена столбцов в запросе, если вы хотите оба, например,

SELECT p.date AS postDate, c.date AS commentDate
FROM posts p, comments c

Затем используйте псевдонимы для получения значений

$postDate = $row['postDate'];
$commentDate = $row['commentDate'];

К вашему сведению, почти никогда не стоит SELECT *, , особенно , когда задействовано несколько таблиц. Вы должны всегда стараться быть конкретными относительно столбцов, добавленных в ваше SELECT предложение

2 голосов
/ 13 января 2012

Лучший способ сделать это - указать поля в самом запросе, указав им псевдонимы:

SELECT posts.date postDate, comments.date commentDate FROM posts, comments;

Обычно не одобряется использование SELECT *. Вы получаете код, который немного менее стабилен. Указывая точные поля и псевдонимы этих полей, вы менее подвержены ошибкам, которые могут возникнуть в результате изменений в схеме базы данных и т. Д.

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

Просто добавьте псевдонимы ... кстати, вы никогда не должны использовать SELECT * FROM ...

$query = mysql_query("SELECT posts.date as pdate, comments.date as cdate FROM posts, comments");
while($row=mysql_fetch_array($query))
{
    $postDate = $row['pdate'];  
    $commentDate = $row['cdate']; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...