我想让所有的mysql表的col名称在php数组?

对此有疑问吗?


当前回答

我在SQL Server中尝试过这个查询,这对我有用:

SELECT name FROM sys.columns WHERE OBJECT_ID = OBJECT_ID('table_name')

其他回答

调用DESCRIBE可以很好地获取表的所有列,但如果需要对其进行筛选,则需要使用SHOW columns FROM。

PHP函数获取表的所有信息的例子:

// get table columns (or return false if table not found)
function get_table_columns($db, $table) {
    
    global $pdo;

    if($cols = $pdo->query("DESCRIBE `$db`.`$table`")) {
        if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
            return $cols;
        }
    }
    
    return false;
}

在我的例子中,我必须找到一个表的主键。所以,我用了:

SHOW COLUMNS FROM `table` WHERE `Key`='PRI';

下面是我的PHP函数:

// get table Primary Key
function get_table_pk($db, $table) {

    global $pdo;
            
    $q = "SHOW COLUMNS FROM `$db`.`$table` WHERE `Key` = 'PRI'";
    if($cols = $pdo->query($q)) {
        if($cols = $cols->fetchAll(PDO::FETCH_ASSOC)) {
            return $cols[0];
        }
    }
    
    return false;
}

旧的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 "<br>Field name: ".$f; }

使用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已经弃用了,将来也会被移除。”

试试我个人使用的这个方法:

SHOW COLUMNS FROM $table where field REGEXP 'stock_id|drug_name' 

当你想检查你的所有表结构与一些文件,然后使用这段代码。在这个查询中,我选择column_name,column_type和table_name以获取更多详细信息。我使用按列的顺序,所以我可以很容易地看到它。

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;

你想检查更多,然后认为链接也帮助你。

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