Php вывести имя поля

Запрос MySQL для получения имен столбцов таблицы

Я хотел бы получить все имена столбцов таблицы mysql в массив на php.

Есть ли для этого запрос?

Ответ 1

Лучше всего использовать виртуальную базу данных метаданных INFORMATION_SCHEMA . В частности, таблица INFORMATION_SCHEMA.COLUMNS .

SELECT `COLUMN_NAME`

FROM `INFORMATION_SCHEMA`.`COLUMNS`

WHERE `TABLE_SCHEMA`=’yourdatabasename’

AND `TABLE_NAME`=’yourtablename’;

Это ОЧЕНЬ мощный способ , и он может предоставить вам ТОННЫ информации без необходимости анализировать текст (например, тип столбца, наличие в нем значения NULL, максимальный размер столбца, набор символов и т. д.).

И это стандартный SQL (в то время как SHOW — это расширение для MySQL) .

Для получения дополнительной информации о различиях между таблицами SHOW. и их использовании с INFORMATION_SCHEMA, ознакомьтесь с общей документацией INFORMATION_SCHEMA для MySQL.

Ответ 2

Вы можете использовать следующий запрос для MYSQL:

SHOW `columns` FROM `your-table`;

Ниже приведен пример кода, который показывает, как реализовать указанный выше синтаксис в php для перечисления имен столбцов:

$sql = «SHOW COLUMNS FROM your-table»;

$result = mysqli_query($conn,$sql);

while($row = mysqli_fetch_array($result))

echo $row[‘Field’].»
«;

>

Для получения подробной информации о выводе SHOW COLUMNS FROM TABLE ознакомьтесь с документацией.

Ответ 3

Используйте mysql_fetch_field() для просмотра всех данных столбца. См. Руководство .

$query = ‘select * from myfield’;

$result = mysql_query($query);

$i = 0;

while ($i < mysql_num_fields($result))

$fld = mysql_fetch_field($result, $i);

$myarray[]=$fld->name;

$i = $i + 1;

>

«Предупреждение. Это расширение устарело с PHP 5.5.0 и будет удалено в будущем».

Ответ 4

Старая функция PHP «mysql_list_fields()» устарела. Сегодня лучший способ получить имена полей — это выполнить запрос « SHOW COLUMNS FROM table_name [LIKE ‘name’] ». Небольшой пример:

$fields = array();

$res=mysql_query(«SHOW COLUMNS FROM mytable»);

while ($x = mysql_fetch_assoc($res))

$fields[] = $x[‘Field’];

>

foreach ($fields as $f) < echo "
Field name: «.$f; >

Ответ 5

Если вы хотите проверить всю структуру таблицы с некоторыми полями, используйте этот код. В этом запросе я выбираю имя_столбца, тип_столбца и имя_таблицы для получения дополнительных сведений. Я использую order by column_type, чтобы легко это видеть.

SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME

FROM `INFORMATION_SCHEMA`.`COLUMNS`

WHERE `TABLE_SCHEMA`=’yourdatabasename’ order by DATA_TYPE;

Если вы хотите проверять только поля двойного типа, вы можете сделать это так :

SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME,DATA_TYPE

FROM `INFORMATION_SCHEMA`.`COLUMNS`

WHERE `TABLE_SCHEMA`=’yourdatabasename’ AND DATA_TYPE like ‘%bigint%’ order by DATA_TYPE;

Е сли вы хотите проверить, какое поле разрешает нулевой тип и т. д., можно использовать это:

SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME,IS_NULLABLE,DATA_TYPE

FROM `INFORMATION_SCHEMA`.`COLUMNS`

WHERE `TABLE_SCHEMA`=’yourdatabasename’ and DATA_TYPE like ‘%bigint%’ and IS_NULLABLE =’NO’ order by COLUMN_TYPE;

Ответ 6

Не уверен, что это то, что вы искали, но у меня это сработало:

$query = query(«DESC YourTable»);

$col_names = array_column($query, ‘Field’);

Этот код возвращает простой массив имен столбцов/имен переменных в вашей таблице или массиве в виде строк, что нужно для динамического построения запросов MySQL. Мое разочарование заключа ется в том, что я просто не знаю, как правильно индексировать массивы в PHP, поэтому я не уверен, что делать с результатами DESC или SHOW. Надеюсь, мой ответ будет полезен для таких новичков, как я!

Для получения результата:

print_r($col_names);

Ответ 7

  • Пока первая строка вашей таблицы не содержит мегабайтного диапазона данных, она должна работать нормально.
  • Имена функций db_rows и db_row_ar должны быть заменены вашей конкретной настройкой базы данных.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

mysql_field_name

Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для данной функции:

Описание

mysql_field_name() возвращает название колонки с указанным индексом.

Список параметров

Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .

Числовое смещение поля. field_offset начинается с 0 . Если field_offset не существует, генерируется ошибка уровня E_WARNING .

Возвращаемые значения

Название поля по указанному индексу в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования mysql_field_name()

/* Таблица пользователей состоит из трёх колонок:
* user_id
* username
* password.
*/
$link = mysql_connect ( ‘localhost’ , ‘mysql_user’ , ‘mysql_password’ );
if (! $link ) die( ‘Ошибка соединения с MySQL: ‘ . mysql_error ());
>
$dbname = ‘mydb’ ;
$db_selected = mysql_select_db ( $dbname , $link );
if (! $db_selected ) die( «Не удалось выбрать базу $dbname : » . mysql_error ());
>
$res = mysql_query ( ‘select * from users’ , $link );

echo mysql_field_name ( $res , 0 ) . «\n» ;
echo mysql_field_name ( $res , 2 );
?>

Результат выполнения данного примера:

Примечания

Замечание: Имена полей, возвращаемые этой функцией являются зависимыми от регистра.

Замечание:

Для обратной совместимости может быть использован следующий устаревший псевдоним: mysql_fieldname()

Смотрите также

  • mysql_field_type() — Возвращает тип указанного поля из результата запроса
  • mysql_field_len() — Возвращает длину указанного поля

User Contributed Notes 12 notes

This function is slightly stupid to be honest, why not just make an array of field names. You could consolidate the two of these functions that way and it makes it a lot easier to list them when your script is dynamic.

function mysql_field_array ( $query )

$field = mysql_num_fields ( $query );

$names [] = mysql_field_name ( $query , $i );

$fields = mysql_field_array ( $query );

echo implode ( ‘, ‘ , $fields [ 3 ] );

// Count them — easy equivelant to ‘mysql_num_fields’

This is another variant of displaying all columns of a query result, but with a simplified while loop.

$query=»select * from user»;
$result=mysql_query($query);
$numfields = mysql_num_fields($result);

while ($row = mysql_fetch_row($result)) // Data
< echo ' ‘.implode($row,’ ‘).»

\n»; >

here’s one way to print out a row of

tags from a table
NOTE: i didn’t test this

$result = mysql_query(«select * from table»);

post a comment if there’s an error

james, why make so difficult when it’s very simple :\

for ($i=0; $i $var = mysql_field_name($res_gb, $i);
$row_title .= $var;
>

The code in the last comment has an obvious mistake in the for loop expression. The correct expression in the for-loop is $x

$result = mysql_query($sql,$conn) or die(mysql_error());
$rowcount=mysql_num_rows($result);
$y=mysql_num_fields($result);
for ($x=0; $x echo = mysql_field_name($result, $x).’
‘;
>

/*
By simply calling the searchtable() function
with these variables it will serach the desired
database and procude a table for each field that
there is a match.
*/

function searchtable($host,$user,$pass,$database,$tablename,$userquery)
$link = mysql_connect($host, $user, $pass) or die(«Could not connect: » . mysql_error());
$db = mysql_select_db($database, $link) or die(mysql_error());
$fields = mysql_list_fields($database, $tablename, $link);
$cols = mysql_num_fields($fields);

for ($i = 1; $i < $cols; $i++) $allfields[] = mysql_field_name($fields, $i);
>
foreach ($allfields as $myfield) $result = mysql_query(«SELECT * FROM $tablename WHERE $myfield like ‘%$userquery%’ «);
if (mysql_num_rows($result) > 0) echo «

search $database for $userquery, found match(es) in $myfield:

\n»;
echo «

\n\t \n»;
for ($i = 1; $i < $cols; $i++) echo "\t\t if ($myfield == mysql_field_name($fields, $i)) echo " bgcolor=\"orange\"> «;
> else echo «>»;
>
echo mysql_field_name($fields, $i) . «

\n»;
>
echo «\t

\n»;
$myrow = mysql_fetch_array($result);
do echo «\t

\n»;
for ($i = 1; $i < $cols; $i++)echo "\t\t

\n»;
>
echo «\t

\n»;
> while ($myrow = mysql_fetch_array($result));
echo «

$myrow[$i]  

\n»;
>
>
>

simple sql to xml converter works with any sql query and returns the name of the table as the root element «row» as each row element and the names of the columns are your children of row. fully tested.

function sqlToXml ( $host , $user , $pass , $database , $tablename , $query )

$link = mysql_connect ( $host , $user , $pass ) or die( «Could not connect: » . mysql_error ());
$db = mysql_select_db ( $database , $link ) or die( mysql_error ());

$result = mysql_query ( $query );
if(! $result )

$numOfCols = mysql_num_fields ( $result );
$numOfRows = mysql_num_rows ( $result );

$info = mysql_fetch_assoc ( $result );

//send headers
header ( ‘Content-type: text/xml’ );
header ( ‘Pragma: public’ );
header ( ‘Cache-control: private’ );
header ( ‘Expires: -1’ );
$xml = » ;
$xml .= » < < $tablename >>» ;

if( $numOfRows > 0 ) <
do <
$xml .= «» ;
foreach( $info as $column => $value ) <
$xml .= » < < $column >> >» ;
>
$xml .= «
» ;
>
while ( $info = mysql_fetch_array ( $result ));
>
$xml .= « >» ;

mysql_free_result ( $result );
return $xml ;

Источник

mysql_field_name

Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:

Описание

mysql_field_name() возвращает название колонки с указанным индексом.

Список параметров

Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .

Числовое смещение поля. field_offset начинается с 0. Если field_offset не существует, генерируется ошибка уровня E_WARNING .

Возвращаемые значения

Название поля по указанному индексу в случае успеха или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования mysql_field_name()

/* Таблица пользователей состоит из трёх колонок:
* user_id
* username
* password.
*/
$link = mysql_connect ( ‘localhost’ , ‘mysql_user’ , ‘mysql_password’ );
if (! $link ) die( ‘Ошибка соединения с MySQL: ‘ . mysql_error ());
>
$dbname = ‘mydb’ ;
$db_selected = mysql_select_db ( $dbname , $link );
if (! $db_selected ) die( «Не удалось выбрать базу $dbname : » . mysql_error ());
>
$res = mysql_query ( ‘select * from users’ , $link );

echo mysql_field_name ( $res , 0 ) . «\n» ;
echo mysql_field_name ( $res , 2 );
?>

Результат выполнения данного примера:

Примечания

Замечание: Имена полей, возвращаемые этой функцией являются регистро-зависимыми.

Замечание:

Для обратной совместимости может быть использован следующий устаревший псевдоним: mysql_fieldname()

Смотрите также

  • mysql_field_type() — Возвращает тип указанного поля из результата запроса
  • mysql_field_len() — Возвращает длину указанного поля

Источник

oci_field_name

Может быть номером поля (нумерация начинается с 1) или именем.

Возвращаемые значения

Возвращает имя в виде строки, или FALSE при ошибках.

Примеры

Пример #1 Пример использования oci_field_name()

// Создайте таблицу:
// CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1),
// clob_col CLOB, date_col DATE);

$conn = oci_connect ( «hr» , «hrpwd» , «localhost/XE» );
if (! $conn ) $m = oci_error ();
trigger_error ( htmlentities ( $m [ ‘message’ ]), E_USER_ERROR );
>

$stid = oci_parse ( $conn , «SELECT * FROM mytab» );
oci_execute ( $stid , OCI_DESCRIBE_ONLY ); // используйте OCI_DESCRIBE_ONLY, если не получаете данных

$ncols = oci_num_fields ( $stid );

for ( $i = 1 ; $i $column_name = oci_field_name ( $stid , $i );
$column_type = oci_field_type ( $stid , $i );

echo «

» ;
echo » $column_name

» ;
echo »

$column_type

» ;
echo «

\n» ;
>

// Выведет:
// Name Type
// NUMBER_COL NUMBER
// VARCHAR2_COL VARCHAR2
// CLOB_COL CLOB
// DATE_COL DATE

oci_free_statement ( $stid );
oci_close ( $conn );

Примечания

Замечание:

В версиях PHP ниже 5.0.0 эта функция называлась ocicolumnname() . В PHP 5.0.0 и выше ocicolumnname() является алиасом oci_field_name() , поэтому вы можете продолжать использовать это имя, однако это не рекомендуется.

Смотрите также

  • oci_num_fields() — Возвращает количество полей в результате запроса
  • oci_field_type() — Возвращает имя типа поля
  • oci_field_size() — Возвращает размер поля

Источник

Читайте также:  Sorting types in php
Оцените статью