kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Haroldo
Haroldo
Question

MySQL query pentru a obține nume de coloană?

Am'd place pentru a obține toate de-un tabel mysql's col nume într-un array in php?

Este acolo o interogare pentru asta?

264 2010-11-12T13:42:23+00:00 19
Programare
php
mysql
Solution / Answer
 ircmaxell
ircmaxell
12 noiembrie 2010 в 1:47
2010-11-12T13:47:34+00:00
Mai mult
Sursă
Editează
#11333986

Cel mai bun mod este de a utiliza INFORMATION_SCHEMA metadate bază de date virtuală. În special INFORMATION_SCHEMA.COLOANE masa...

SELECT `COLUMN_NAME` 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='yourdatabasename' 
    AND `TABLE_NAME`='yourtablename';

L's FOARTE puternic, și poate oferi de TONE de informații fără a fi nevoie pentru a analiza de text (cum ar fi de tip coloană, dacă coloana este null, max dimensiune coloană, set de caractere, etc)...

Oh, și-l's standard SQL (Întrucât EMISIUNE ... este un MySQL extensie specifică)...

Pentru mai multe informații despre diferența dintre a ARĂTA și folosind `INFORMATION_SCHEMA mese, a verifica afară de MySQL Documentația privind INFORMATION_SCHEMA în general...

482
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
 bcosca
bcosca
12 noiembrie 2010 в 1:44
2010-11-12T13:44:57+00:00
Mai mult
Sursă
Editează
#11333983

Puteți folosi următoarea interogare pentru MYSQL:

SHOW columns FROM your-table;

Mai jos este un exemplu de cod care arată Cum să pună în aplicare de mai sus sintaxa în php pentru a lista numelor de coloane:

$sql = "SHOW COLUMNS FROM your-table";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
    echo $row['Field']."<br>";
}

Pentru Detalii despre producția de EMISIUNE de COLOANE DIN TABELUL vizita: MySQL Referinta.

 bcosca
bcosca
Răspuns editat 28 februarie 2018 в 7:23
189
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Surreal Dreams
Surreal Dreams
12 noiembrie 2010 в 1:46
2010-11-12T13:46:35+00:00
Mai mult
Sursă
Editează
#11333985

Se pare că există 2 moduri:

DESCRIBE `tablename`

sau

SHOW COLUMNS FROM `tablename`

Mai multe despre "să DESCRIE" aici: http://dev.mysql.com/doc/refman/5.0/en/describe.html

41
0
 Jeff
Jeff
5 martie 2012 в 2:07
2012-03-05T02:07:31+00:00
Mai mult
Sursă
Editează
#11333987

Am făcut acest lucru în trecut.

SELECT column_name
FROM information_schema.columns
WHERE table_name='insert table name here'; 
20
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
The  Pixel Developer
The Pixel Developer
12 noiembrie 2010 в 1:45
2010-11-12T13:45:13+00:00
Mai mult
Sursă
Editează
#11333984

Edit: Astăzi am învățat cel mai bun mod de a face acest lucru. Vă rugăm să consultați ircmaxell's a răspunde.


Analiza de ieșire de afișare COLOANE DIN tabel;`

Aici's mai multe despre asta aici: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html

14
0
 user2558588
user2558588
8 iulie 2013 в 7:14
2013-07-08T19:14:32+00:00
Mai mult
Sursă
Editează
#11333989

Un vechi funcția PHP "mysql_list_fields()" este învechită. Deci, astăzi, cel mai bun mod de a obține numele de domenii este o interogare "ARATĂ COLOANE DE table_name [CA 'numele']". Deci, aici este un mic exemplu:

$fields = array();
$res=mysql_query("SHOW COLUMNS FROM mytable");
while ($x = mysql_fetch_assoc($res)){
  $fields[] = $x['Field'];
}
foreach ($fields as $f) { echo "<br>Field name: ".$f; }
6
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Gavin Simpson
Gavin Simpson
7 mai 2013 в 10:33
2013-05-07T22:33:14+00:00
Mai mult
Sursă
Editează
#11333988

Folosesc mysql_fetch_field () pentru a vizualiza toate coloană de date. A se vedea manual.

$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;
}

"Avertisment Această extensie este învechită începând cu PHP 5.5.0, și vor fi eliminate în viitor."

6
0
Abdul  Gaffar Shah
Abdul Gaffar Shah
4 octombrie 2013 в 5:59
2013-10-04T17:59:14+00:00
Mai mult
Sursă
Editează
#11333990
function get_col_names(){  
    $sql = "SHOW COLUMNS FROM tableName";  
    $result = mysql_query($sql);     
    while($record = mysql_fetch_array($result)){  
     $fields[] = $record['0'];  
    }
    foreach ($fields as $value){  
      echo 'column name is : '.$value.'-';  
}  
 }  

return get_col_names();
4
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Shafiqul Islam
Shafiqul Islam
16 martie 2017 в 7:20
2017-03-16T07:20:51+00:00
Mai mult
Sursă
Editează
#11334022

atunci când doriți să verificați toate structura de tabel cu unele depus apoi utilizați acest cod. În această interogare eu select column_name,column_type și table_name pentru mai multe detalii . Eu folosesc comanda prin column_type deci, eu pot vedea cu ușurință.

SELECT `COLUMN_NAME`,COLUMN_TYPE,TABLE_NAME 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='yourdatabasename' order by DATA_TYPE;

Dacă doriți să verificați doar dublu tip a depus atunci puteți face cu ușurință

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;

introduceți descrierea imaginii aici

dacă doriți să verificați care terenul permite null tip etc, atunci puteți folosi acest

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;

introduceți descrierea imaginii aici

vrei pentru a verifica mai apoi cred link-ul ajuta, de asemenea,.

https://dev.mysql.com/doc/refman/5.7/en/columns-table.html

Shafiqul Islam
Shafiqul Islam
Răspuns editat 31 ianuarie 2018 в 10:03
4
0
 Johan
Johan
29 octombrie 2013 в 4:56
2013-10-29T16:56:29+00:00
Mai mult
Sursă
Editează
#11333991

SHOW COLOANE în mysql 5.1 (nu 5.5) utilizează temporar un disc de masă.

  • http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.html
  • http://dev.mysql.com/doc/refman/5.1/en/show-columns.html

Astfel încât acesta poate fi considerat lent pentru unele cazuri. Cel puțin, se poate ciocni cu created_tmp_disk_tables valoare. Imaginați-vă o temporar pe disc de masă pe conexiune sau pe fiecare pagină cerere.

SHOW COLOANE nu este chiar atât de lent, poate pentru că se folosește sistemul de fișiere cache. Phpmyadmin spune ~0.5 ms în mod constant. Acest lucru este nimic în comparație cu 500ms-1000ms de servire o pagină wordpress. Dar totuși, există momente contează. Există un disc de sistem de implicare, nu știi niciodată ce se întâmplă atunci când serverul este ocupat, cache-ul este plin, hdd-ul este blocat etc.

Preluarea nume de coloană prin *SELECTAȚI DE la ... LIMITA 1** a fost în jurul valorii de ~0.1 ms, și se poate folosi query cache la fel de bine.

Deci, aici este micul meu cod optimizat pentru a obține numele de coloane dintr-un tabel, fără a utiliza show coloane dacă este posibil:

function db_columns_ar($table)
{
//returns Array('col1name'=>'col1name','col2name'=>'col2name',...)
if(!$table) return Array();
if(!is_string($table)) return Array();

global $db_columns_ar_cache;
if(!empty($db_columns_ar_cache[$table]))
    return $db_columns_ar_cache[$table];

//IMPORTANT show columns creates a temp disk table
$cols=Array();
$row=db_row_ar($q1="SELECT * FROM `$table` LIMIT 1");
if($row)
    {
    foreach($row as $name=>$val)
        $cols[$name]=$name;
    }
else
    {
    $coldata=db_rows($q2="SHOW COLUMNS FROM `$table`");
    if($coldata)
        foreach($coldata as $row)
            $cols[$row->Field]=$row->Field;
    }
$db_columns_ar_cache[$table]=$cols;
//debugexit($q1,$q2,$row,$coldata,$cols);
return $cols;
}

Note:

  • Atâta timp cât tabele primul rand nu conține megabyte serie de date, acesta ar trebui să funcționeze bine.
  • Funcția de nume db_rows și db_row_ar ar trebui să fie înlocuite cu specific bazei de date de configurare.
3
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
 useranon
useranon
22 decembrie 2015 в 10:51
2015-12-22T22:51:38+00:00
Mai mult
Sursă
Editează
#11333999

Nu sunt sigur dacă acest lucru este ceea ce ați fost în căutarea pentru, dar aceasta a lucrat pentru mine:

$query = query("DESC YourTable");  
$col_names = array_column($query, 'Field');

Care returnează o simplă matrice de coloana nume / nume de variabile din tabel sau matrice ca siruri de caractere, care este ceea ce am nevoie pentru a dinamic a construi interogări MySQL. Frustrarea mea a fost că am pur și simplu nu't știu cum să index array in PHP foarte bine, așa că am fost't știu ce să fac cu rezultatele de la DESC sau SPECTACOL. Sper că răspunsul meu este util pentru incepatori ca mine!

Pentru a verifica rezultatul: print_r($col_names);

 useranon
useranon
Răspuns editat 22 decembrie 2015 в 11:02
3
0
 mohsin
mohsin
20 iulie 2015 в 3:21
2015-07-20T15:21:14+00:00
Mai mult
Sursă
Editează
#11333993

Incearca asta eu personal folosesc:

SHOW COLUMNS FROM $table where field REGEXP 'stock_id|drug_name' 
 SHAZ
SHAZ
Răspuns editat 23 martie 2016 в 6:15
3
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Amir No-Family
Amir No-Family
13 noiembrie 2018 в 4:06
2018-11-13T16:06:49+00:00
Mai mult
Sursă
Editează
#11334034

dacă ai nevoie doar de nume de câmpuri și tipuri (probabil pentru ușor de copiere-lipire în Excel):

SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='databasenamegoeshere'
AND DATA_TYPE='decimal' and TABLE_NAME = 'tablenamegoeshere'

elimina

DATA_TYPE='decimal'

dacă doriți toate tipurile de date

2
0
 T.Todua
T.Todua
26 iunie 2015 в 8:28
2015-06-26T08:28:29+00:00
Mai mult
Sursă
Editează
#11333992

ÎN WORDPRESS:

global $wpdb;   $table_name=$wpdb->prefix.'posts';
foreach ( $wpdb->get_col( "DESC " . $table_name, 0 ) as $column_name ) {
  var_dump( $column_name );
}
2
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
 zhi.yang
zhi.yang
10 noiembrie 2015 в 4:07
2015-11-10T16:07:11+00:00
Mai mult
Sursă
Editează
#11333994

dacă utilizați php, utiliza acest sinteza.

se poate obține selectați câmpurile de informații complete cu nici un rezultat, și toate câmpurile personalizate, cum ar fi:

SELECT a.name aname, b.name bname, b.* 
FROM table1 a LEFT JOIN table2 b
ON a.id = b.pid;

dacă sql de mai sus nu returneze date,va primi, de asemenea, nume de câmp numele, numele, b's alte nume de câmp

doar două linii:

$query_info = mysqli_query($link, $data_source);
$fetch_fields_result = $query_info->fetch_fields();
 zhi.yang
zhi.yang
Răspuns editat 25 iunie 2016 в 2:14
2
0
Gusstavv Gil
Gusstavv Gil
24 aprilie 2016 в 6:39
2016-04-24T06:39:57+00:00
Mai mult
Sursă
Editează
#11334005

Această întrebare este vechi, dar am ajuns aici în căutarea pentru o modalitate de a găsi o anumită interogare domeniul său nume într-un mod dinamic (nu neapărat numai câmpurile unui tabel). Și din moment ce oamenii continuă să subliniem acest lucru ca răspuns pentru că, având sarcina în alte întrebări legate de, I'm partajare modul în care am găsit-o poate face, folosind Gavin Simpson's sfaturi:

//Function to generate a HTML table from a SQL query
function myTable($obConn,$sql)
{
    $rsResult = mysqli_query($obConn, $sql) or die(mysqli_error($obConn));
    if(mysqli_num_rows($rsResult)>0)
    {
        //We start with header. >>>Here we retrieve the field names<<<
        echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\"><tr align=\"center\" bgcolor=\"#CCCCCC\">";
        $i = 0;
        while ($i < mysqli_num_fields($rsResult)){
           $field = mysqli_fetch_field_direct($rsResult, $i);
           $fieldName=$field->name;
           echo "<td><strong>$fieldName</strong></td>";
           $i = $i + 1;
        }
        echo "</tr>"; 
        //>>>Field names retrieved<<<

        //We dump info
        $bolWhite=true;
        while ($row = mysqli_fetch_assoc($rsResult)) {
            echo $bolWhite ? "<tr bgcolor=\"#CCCCCC\">" : "<tr bgcolor=\"#FFF\">";
            $bolWhite=!$bolWhite;
            foreach($row as $data) {
                echo "<td>$data</td>";
            }
            echo "</tr>";
        }
        echo "</table>";
    }
}

Acest lucru poate fi ușor modificat pentru a introduce numele câmpurilor într-o matrice.

Folosind un simplu: $sql="SELECT * FROM myTable LIMITA de 1" poate da câmpurile de orice masă, fără a fi nevoie de a utiliza EMISIUNE de COLOANE sau orice extra modulul php, dacă este necesar (eliminarea datelor basculante parte).

Sperăm că acest lucru vă ajută altcineva.

Gusstavv Gil
Gusstavv Gil
Răspuns editat 24 aprilie 2016 в 6:52
2
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Ignat Ospadov
Ignat Ospadov
24 ianuarie 2017 в 4:27
2017-01-24T16:27:18+00:00
Mai mult
Sursă
Editează
#11334017

Această interogare preia o listă de toate coloanele într-o bază de date fără a fi nevoie să specificați un nume de tabel. Returnează o listă de doar nume de coloane:

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_schema = 'db_name'

Cu toate acestea, atunci când am fugit această interogare în phpmyadmin, se regăsesc o serie de erori. Cu toate acestea, ea a lucrat. Așa-l utilizați cu prudență.

2
0
Gil Baggio
Gil Baggio
28 noiembrie 2017 в 4:07
2017-11-28T16:07:10+00:00
Mai mult
Sursă
Editează
#11334030

Cea mai simpla solutie de toate Răspunsuri:

DESC `table name`

sau

DESCRIBE `table name`

sau

SHOW COLUMNS FROM `table name`
2
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Ad Kahn
Ad Kahn
11 octombrie 2016 в 5:22
2016-10-11T17:22:41+00:00
Mai mult
Sursă
Editează
#11334010

eu nu sunt expert, dar asta functioneaza pentru mine..

$sql = "desc MyTable";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>"; // returns the first column of array. in this case Field

      // the below code will return a full array-> Field,Type,Null,Key,Default,Extra    
      // for ($c=0;$c<sizeof($row);$c++){echo @$row[$c]."<br>";} 

}
1
0
Comunități asemănătoare 2
PHP România, Moldova
PHP România, Moldova
121 utilizatori
Q&A: https://ro.kzen.dev Vorbim despre Laravel, Symfony, Yii, WP, OpenCart... @js_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro https://github.com/js-ro/it-telegram
Deschide telegram
MySQL - comunitatea Română
MySQL - comunitatea Română
16 utilizatori
Comunitatea română a programatorilor MySQL.
Deschide telegram
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
Александр Македонский
Înregistrat 6 zile în urmă
2
Andrei Kalinin
Înregistrat 3 săptămâni în urmă
3
Koroleva Ego
Înregistrat 1 lună în urmă
4
Star Lenon
Înregistrat 1 lună în urmă
5
Данил Жевнеров
Înregistrat 2 luni în urmă
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
DA
DE
EL
ES
FR
ID
IT
JA
LT
LV
NL
NO
PT
RO
RU
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire