#php #mysql #html
#php #mysql #HTML
Вопрос:
У меня есть страница, которая возвращает некоторые результаты из SQL-запроса в базу данных MySQL. По какой-то причине оно возвращает каждое значение дважды, я думаю, потому что оно хранится в базе данных как с числовым индексом, так и со строковым индексом. Как я могу извлечь только индексы и значения, которые имеют строковый индекс, и игнорировать те, у которых целочисленный индекс?
Функция, которую я использую для генерации таблицы, приведена ниже:
function SQLtable($answer) {
$result = "<table class="SQLresult">";
$row = mysql_fetch_array($answer);
//TODO check for empty table here and return a message if empty
$result .= "<tr>";
foreach (array_keys($row) AS $heading) {
$result .= "<th>$heading</th>";
}
$result .= "</tr>";
do {
$result .= "<tr>";
foreach($row as $cell) {
$result .= "<td>".$cell."</td>";
}
$result .= "</tr>";
}
while ($row = mysql_fetch_array($answer));
$result .= "</table>";
return $result;
}
Скриншот результата:http://i.stack.imgur.com/3YXoh.png
Спасибо.
edit1 — SQL, который я использую, является чем-то вроде заполнителя для тестирования. Это:
$query = "SELECT * FROM politicians";
Я также пробовал запрашивать столбцы, и я получаю ту же проблему.
$query = "SELECT firstname,lastname,jurisdiction,party,riding FROM politicians";
Комментарии:
1. Можете ли вы опубликовать SQL, который вы используете для извлечения данных из вашей таблицы. Это, скорее всего, то, что нужно изменить.
Ответ №1:
mysql_fetch_array()
по умолчанию возвращает хэш, который содержит как ассоциативный массив, так и обычный набор результатов с числовым ключом для вашей строки. Для извлечения одного или другого используйте mysql_fetch_row()
(array) или mysql_fetch_assoc()
(hash), или укажите, какой тип вы хотите, используя необязательный второй аргумент mysql_fetch_array()
, как описано на его странице руководства (ссылка выше).
Это эквивалентности:
mysql_fetch_assoc($result) -> mysql_fetch_array($result, MYSQL_ASSOC);
mysql_fetch_row($result) -> mysql_fetch_array($result, MYSQL_NUM);
mysql_fetch_array($result) -> mysql_fetch_array($result, MYSQL_BOTH);