Вывод в виде массива - PullRequest
0 голосов
/ 29 мая 2009
       $result = mysql_query(" SELECT p.page_url AS url,
                               COUNT(*) AS occurrences 
                               FROM page p, word w, occurrence o
                               WHERE p.page_id = o.page_id AND
                               w.word_id = o.word_id AND
                               w.word_word = \"$keyword\"
                               GROUP BY p.page_id
                               ORDER BY occurrences DESC
                               " );

$output = "<loginsuccess>";

for( $i = 1; $row = mysql_fetch_array($result); $i++ )      {


$output .="<keyword>".$_POST['keyword']."</keyword><name>".$row['url']."</name><occur>".$row['occurrences']."</occur><queryTime>".(substr($end_time-$start_time,0,5))."</queryTime>";
}

$output .= "</loginsuccess>";
print ($output);

Я получаю вывод в XML, вместо этого я хочу его в массиве ... как этого добиться.

Код ниже не работает ...

$ret = array();
for( $i = 1; $row = mysql_fetch_array($result); $i++ )      {

     $tmp['url'] = $row['url'];
     $tmp['occurrences'] = $row['occurrences'];

     $ret[] = $tmp;

}
 return $ret;

Ответы [ 5 ]

7 голосов
/ 29 мая 2009

Вы уже получаете результаты в массиве, когда вызываете mysql_fetch_array($result). Вот что делает mysql_fetch_array .

Если вы не хотите какой-нибудь другой формат массива? Если это так, вам нужно быть более конкретным.

1 голос
/ 29 мая 2009

A for-loop должен использоваться только в инкрементном режиме, вы пытались использовать его вместо в то время как loop. Это не «делать 1000 раз», а «делать, пока у нас есть ряд для использования».

Попробуйте это:

while($row = mysql_fetch_array($result)) {
  $tmp['url'] = $row['url'];
  $tmp['occurrences'] = $row['occurrences'];
  $ret[] = $tmp;
}
return $ret;
1 голос
/ 29 мая 2009

Использование print_r():

<code>echo "<pre>";
print_r($row);
echo "
";

Примечание: Если вы не заключите его в теги <pre>, вывод будет трудно прочитать, так как он будет отображаться в одной строке

0 голосов
/ 29 мая 2009

Вам необходимо инициализировать массив $ tmp перед его использованием.

0 голосов
/ 29 мая 2009

Попробуйте, как это так, обратите внимание на здесь-док стиль написания оператора SQL. Я нахожу это очень полезным. Также я бы предложил переписать SQL-код, чтобы использовать JOIN вместо того, чтобы заполнять предложение WHERE критериями соединения.

$sql = <<<EOSQL
SELECT p.page_url AS url, COUNT(*) AS occurrences 
FROM page p, word w, occurrence o
WHERE p.page_id = o.page_id AND
w.word_id = o.word_id AND
w.word_word = "$keyword"
GROUP BY p.page_id
ORDER BY occurrences DESC;
EOSQL;
$result = mysql_query($sql) or die('failed to execute the query');

while ($row = mysql_fetch_array($result)) {
    print_r ($row);
}

Надеюсь, это примерно то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...