MYSQL / PHP SELECT DISTINCT - PullRequest
       16

MYSQL / PHP SELECT DISTINCT

0 голосов
/ 14 сентября 2011

Эта функция вызывается на другой странице.

function adminnav (){
    $pagewcoms = mysql_query("SELECT DISTINCT pageid FROM comments") or die(mysql_error());
    $idnavrow = mysql_fetch_row($pagewcoms);
    while ($itest = mysql_fetch_row($pagewcoms)) {
        echo "$itest[0] <br />";
    }
}

adminnav('');

Таблица выглядит так

CREATE TABLE `comments` (
  `commentid` int(5) NOT NULL auto_increment,
  `pageid` int(5) NOT NULL default '0',
  `name` text NOT NULL,
  `email` text NOT NULL,
  `comment` text NOT NULL,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`commentid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=481 ;

INSERT INTO `comments` VALUES(480, 1, '3', '3', '3', '2011-09-13 22:43:06');
INSERT INTO `comments` VALUES(479, 1, '2', '2', '2', '2011-09-13 22:43:01');
INSERT INTO `comments` VALUES(476, 1, '1', '1', '1', '2011-09-13 17:22:49');
INSERT INTO `comments` VALUES(477, 2, 'taylordcraig', 'taylordcraig@gmail.com', 'this is page two', '2011-09-13 17:26:09');
INSERT INTO `comments` VALUES(478, 3, 'this is page3', 'this is page3', 'this is page3', '2011-09-13 22:28:59');

Моя проблема заключается в функции печати «массив массив» Я могу работать с данными, но разве не должно быть 3 разных результатов? Это самый близкий я был. Идея состоит в том, чтобы выполнить поиск в таблице и найти страницы с комментариями, которые я позже перечислю в виде ссылок.

Итак, результат, который я ищу, будет

"1 2 3"

Заранее спасибо.

EDIT:

Извините, я плохо сформулировал свой вопрос. Porlem не является «массивом массивов», это то, что есть только два. Я могу заставить это отображаться, но это не имеет значения. У меня по-прежнему отображается только «2 3», как уже было сказано, у меня было только два массива данных.

[** я, я собираюсь переспросить это сейчас?]

Ответы [ 4 ]

2 голосов
/ 14 сентября 2011

Должно быть echo "$itest[0] <br />";

1 голос
/ 14 сентября 2011

Проверьте документы PHP: http://php.net/manual/en/function.mysql-fetch-row.php

mysql_fetch_row - получить строку результата в виде перечисляемого массива

Вы не получаете значение, вы выбираете массив. Причина, по которой вы видите только «массив массива», заключается в том, что первый результат «исчезает» в строке $idnavrow = mysql_fetch_row($pagewcoms);.

Измените свою функцию на следующую, и я уверен, что вы увидите все 3 ожидаемых числа:

    $pagewcoms = mysql_query("SELECT DISTINCT pageid FROM comments") or die(mysql_error());
    while ($itest = mysql_fetch_row($pagewcoms)) {
        echo $itest[0] . ' <br />';
    }
0 голосов
/ 14 сентября 2011

mysql_fetch_row () возвращает массив, даже если он содержит только один элемент. Ваше «эхо» должно выглядеть так:

echo "{$itest[0]} <br />";
0 голосов
/ 14 сентября 2011

mysql_fetch_row возвращает массив, содержащий все элементы в строке. Вместо того, чтобы печатать $ itest, вы должны напечатать $ itest [0].

Вы также можете использовать mysql_fetch_assoc и напечатать $ itest ['pageid'] для ясности.

...