Как получить имена столбцов вместе с набором результатов в php/mysql?
Это нормально?
$i = 0;
while ($row = mysql_fetch_array($result))
{
$resultset[] = $row;
$columns[] = mysql_fetch_field($result, $i);
}
Затем при попытке распечатать
<tr><th><?php echo $columns[0] ?></th><th><?php echo $columns[1] ?></th></tr>
Я получил сообщение об ошибке
Catchable fatal error: Object of class stdClass could not be converted to string
Ответы
Ответ 1
Попробуйте функцию mysql_fetch_field.
Например:
<?php
$dbLink = mysql_connect('localhost', 'usr', 'pwd');
mysql_select_db('test', $dbLink);
$sql = "SELECT * FROM cartable";
$result = mysql_query($sql) or die(mysql_error());
// Print the column names as the headers of a table
echo "<table><tr>";
for($i = 0; $i < mysql_num_fields($result); $i++) {
$field_info = mysql_fetch_field($result, $i);
echo "<th>{$field_info->name}</th>";
}
// Print the data
while($row = mysql_fetch_row($result)) {
echo "<tr>";
foreach($row as $_column) {
echo "<td>{$_column}</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Ответ 2
Используйте mysql_fetch_assoc
, чтобы получить только ассоциативный массив и получить имена столбцов с первой итерацией:
$columns = array();
$resultset = array();
while ($row = mysql_fetch_assoc($result)) {
if (empty($columns)) {
$columns = array_keys($row);
}
$resultset[] = $row;
}
Теперь вы можете распечатать головку своей таблицы и с первой итерацией:
echo '<table>';
$columns = array();
$resultset = array();
while ($row = mysql_fetch_assoc($result)) {
if (empty($columns)) {
$columns = array_keys($row);
echo '<tr><th>'.implode('</th><th>', $columns).'</th></tr>';
}
$resultset[] = $row;
echo '<tr><td>'.implode('</td><td>', $rows).'</td></tr>';
}
echo '</table>';
Ответ 3
Вы хотите посмотреть
mysql_fetch_assoc
Что дает каждую строку как ассоциативную клавишу = > пара значений, где ключ является именем столбца.
Документация здесь
Ответ 4
Хотя он устарел и больше не используется в PHP 7, вы можете избежать использования объекта, используя вместо него функцию mysql_field_name
, которая возвращает строку.
Ответ 5
Попробуйте это
$result=mysql_query('SELECT * FROM `table1` where id=5') or die ('query failed');
echo "<table>";
while ($row=mysql_fetch_assoc($result)) {
$column = array_keys($row);
for($i=0; $i<sizeof($column); $i++){
echo "<tr><th>".$column[$i]."</th><td>".$row[$column[$i]]."</td></tr>";
}
}
echo "</table>";
ИЛИ
$result=mysql_query('SELECT * FROM `table1` where id=5') or die ('query failed');
echo "<table>";
$row=mysql_fetch_assoc($result);
$column = array_keys($row);
for($i=0; $i<sizeof($column); $i++){
echo "<tr><th>".$column[$i]."</th><td>".$row[$column[$i]]."</td></tr>";
}
echo "</table>";