English 中文(简体)
在MySQL中打上表列的名字?
原标题:Get table column names in MySQL?
  • 时间:2009-10-06 16:32:12
  •  标签:

是否有办法利用PHP对MySQL的表格打上一栏?

最佳回答
问题回答

我做了一个PDO功能,把所有栏目都归为简单阵列。

public function getColumnNames($table){
    $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
    try {
        $core = Core::getInstance();
        $stmt = $core->dbh->prepare($sql);
        $stmt->bindValue( :table , $table, PDO::PARAM_STR);
        $stmt->execute();
        $output = array();
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $output[] = $row[ COLUMN_NAME ];                
        }
        return $output; 
    }

    catch(PDOException $pe) {
        trigger_error( Could not connect to MySQL database.   . $pe->getMessage() , E_USER_ERROR);
    }
}

产出将是一个阵列:

Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )

a. 儿女职业介绍,但与我一样;

P.S. 我没有列入核心类别,但你可以使用自己的类别。 D.S.

如果你选择:

mysql_query( SHOW COLUMNS FROM tableName ); 

这一解决办法来自指挥线我的ql

mysql>USE information_schema;

在下面的问询中,只是改动和提炼;--DATABASE_NAME->至-TABLENAME->到您的表格中,你只是想到经社部反对种族主义、种族歧视、仇外心理和相关的不容忍现象世界会议声明的实地价值。

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA =  <--DATABASE_NAME-->  AND   TABLE_NAME= <--TABLENAME--> ;

我需要一栏名,作为固定阵列,而其他答复则归还了联系阵列,因此我使用了:

$con = mysqli_connect( localhost ,$db_user,$db_pw,$db_name);
$table =  people ;

/**
* Get the column names for a mysql table
**/

function get_column_names($con, $table) {
  $sql =  DESCRIBE  .$table;
  $result = mysqli_query($con, $sql);

  $rows = array();
  while($row = mysqli_fetch_assoc($result)) {
    $rows[] = $row[ Field ];
  }

  return $rows;
}

$col_names = function get_column_names($con, $table);

col 姓名现在平等:

(
    [0] => name
    [1] => parent
    [2] => number
    [3] => chart_id
    [4] => type
    [5] => id
)

研究:

mysql_query( DESCRIBE  .$table);

如何做到这一点:

SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR  ,
 )
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA =  my_database  AND TABLE_NAME =  my_table ;

SET @cCommand = CONCAT(  SELECT  , @cCommand,   from my_database.my_table; );
PREPARE xCommand from @cCommand;
EXECUTE xCommand;

The MySQL function describe table should get you where you want to go (put your table name in for "table"). You ll have to parse the output some, but it s pretty easy. As I recall, if you execute that query, the PHP query result accessing functions that would normally give you a key-value pair will have the column names as the keys. But it s been a while since I used PHP so don t hold me to that. :)

http://php.net/manual/en/Function.mysql-list-fields.php” rel=“nofollow noreferer”>mysql_list_fields 职能可能与你有关,但正如手册所述:

This function is deprecated. It is preferable to use mysql_query() to issue a SQL SHOW COLUMNS FROM table [LIKE name ] statement instead.

您也不妨查阅<代码>mysql_fetch_array(),例如:

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] =  First Field ;
//$row[ first_field ] =  First Field ;
}

a. 根据关键词或问询,按一栏列出细节和表格结构

1. 姓名/代码

2.DESBECRI table_name

3. 缩略语

4.SHOW创建表格:名称;

5.EXPLAIN table_name

你们可以通过简单指挥获得整个表层结构。

DESC TableName

或您可在询问后使用。

SHOW COLUMNS FROM TableName
$col = $db->query("SHOW COLUMNS FROM category");

while ($fildss = $col->fetch_array())
{             
    $filds[] =  "{ .$fildss[ Field ]. }" ;
    $values[] =  $rows-> .$fildss[ Field ].  ;
}

if($type ==  value )
{
    return $values = implode( , , $values);
}
else {
     return $filds = implode( , , $filds);
}

这为我工作。

$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>";
}

I have write a simple php script to fetch table columns through PHP: Show_table_columns.php

<?php
$db =  Database ; //Database name
$host =  Database_host ; //Hostname or Server ip
$user =  USER ; //Database user
$pass =  Password ; //Database user password
$con = mysql_connect($host, $user, $pass);
if ($con) {
    $link = mysql_select_db($db) or die("no database") . mysql_error();
    $count = 0;
    if ($link) {
        $sql = "
            SELECT column_name
            FROM   information_schema.columns
            WHERE  table_schema =  $db 
                   AND table_name =  table_name "; // Change the table_name your own table name
        $result = mysql_query($sql, $con);
        if (mysql_query($sql, $con)) {
            echo $sql . "<br> <br>";
            while ($row = mysql_fetch_row($result)) {
                echo "COLUMN " . ++$count . ": {$row[0]}<br>";
                $table_name = $row[0];
            }
            echo "<br>Total No. of COLUMNS: " . $count;
        } else {
            echo "Error in query.";
        }
    } else {
        echo "Database not found.";
    }
} else {
    echo "Connection Failed.";
}
?>

欢乐!

我的Sqli fetch_field()为我工作:

if ($result = $mysqli -> query($sql)) {
  // Get field information for all fields
  while ($fieldinfo = $result -> fetch_field()) {
    printf("Name: %s
", $fieldinfo -> name);
    printf("Table: %s
", $fieldinfo -> table);
    printf("Max. Len: %d
", $fieldinfo -> max_length);
  }
  $result -> free_result();
}

资料来源:

如果用公用设备装载结果就是这样做,便容易:

$sql = "SELECT p.* FROM (SELECT 1) as dummy LEFT JOIN `product_table` p on null";
$q = $this->db->query($sql);
$column_names = array_keys($q->row);

This you load a single result using this query, you get an array with the table column names as keys and null as value. E.g.

Array(
 product_id  => null,
 sku  => null,
 price  => null,
...
)

之后,你可以很容易地利用“基地”功能阵列获得表列名称——钥匙(单位:美元)。





相关问题