Неизменность хороша. Посмотрите Эффективный Java. Если бы необходимо было скопировать Строку каждый раз, когда Вы раздали ее, то это было бы большим количеством подверженного ошибкам кода. У Вас также есть беспорядок относительно который влияние модификаций который ссылки. Таким же образом то Целое число должно быть неизменным для поведения как интервал, Строки должны вести себя как неизменные для действия как примитивы. В строках передачи C++ значением делает это без явного упоминания в исходном коде.
Попробуйте функцию 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>";
?>
Используйте 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>';
Вы хотите посмотреть на
mysql_fetch_assoc
, который дает каждую строку как ассоциативную пару ключ => значение, где ключ является именем столбца.
Документация здесь