【问题标题】:How do I get column names from a given MySQL table?如何从给定的 MySQL 表中获取列名?
【发布时间】:2016-11-27 23:00:30
【问题描述】:

如何使用 mysqli 扩展将表的列名放入 PHP 数组?我需要获取任何给定表的列名而不从表中获取任何数据。

【问题讨论】:

  • 您目前如何使用mysqli
  • 您想从结果集中获取列名还是只从给定表中获取列?
  • 给定表中的列

标签: php mysql arrays mysqli


【解决方案1】:

你可以使用array_keys()来获取一个数组的所有键,

$myarray = array('key1' => 'a', 'key2' => 'b')
$x = array_keys($myarray);

你想要的结果可以从$x得到

$x = array(0 => 'key1', 1 => 'key2');

为了得到一个表的列名,

$sql = "SELECT * FROM table_name LIMIT 1";
$ref = $result->query($sql);
$row = mysqli_fetch_assoc($ref);
$x = array_keys($row);

现在 $x 数组包含表的列名

【讨论】:

    【解决方案2】:

    以下代码从表table_name获取所有列名:

    $mysqli = new mysqli('localhost', 'USERNAME_HERE', 'PASSWORD_HERE', 'DATABASE_HERE');
    
    $sql = 'SHOW COLUMNS FROM table_name';
    $res = $mysqli->query($sql);
    
    while($row = $res->fetch_assoc()){
        $columns[] = $row['Field'];
    }
    

    由于我的表中有idname 列,结果如下:

    Array
    (
        [0] => id
        [1] => name
    )
    

    如果您想从结果集中获取列,这取决于,但这里有一种方法:

    $mysqli = new mysqli('localhost', 'USERNAME_HERE', 'PASSWORD_HERE', 'DATABASE_HERE');
    
    $sql = 'SELECT * FROM table_name';
    $res = $mysqli->query($sql);
    
    $values = $res->fetch_all(MYSQLI_ASSOC);
    $columns = array();
    
    if(!empty($values)){
        $columns = array_keys($values[0]);
    }
    

    $columns 的示例结果:

    Array
    (
        [0] => id
        [1] => name
    )
    

    $values 的示例结果:

    Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => Name 1
            )
    
        [1] => Array
            (
                [id] => 2
                [name] => Name 2
            )
    
    )
    

    【讨论】:

    • 当使用任一解决方案时,查询返回布尔值而不是列名。
    • @benjrei 确保连接正常...你能检查一下errors吗?
    猜你喜欢
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2011-03-25
    • 2018-08-28
    • 1970-01-01
    • 2022-01-20
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多