是否有一种方法可以在MySQL中使用PHP获取表的列名?
当前回答
如果你喜欢的话,还有这个:
mysql_query('SHOW COLUMNS FROM tableName');
其他回答
如果使用assoc加载结果,简单的方法是这样做:
$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);
这个你用这个查询加载一个结果,你得到一个数组,表的列名为键,值为空。 如。
Array(
'product_id' => null,
'sku' => null,
'price' => null,
...
)
之后,您可以使用PHP函数array_keys($result)轻松获取表的列名。
MySQL函数 描述表 应该把你带到你想去的地方(把你的表名输入“table”)。您必须对输出进行一些解析,但这非常简单。我记得,如果执行该查询,PHP查询结果访问函数将以列名作为键,该函数通常会提供一个键-值对。但我已经有一段时间没有使用PHP了,所以不要强迫我这么做。:)
这对我很有效。
$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
echo $row[0]."<br>";
}
我做了一个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
... )
对不起死灵,但我喜欢我的功能;)
附注:我没有包括类核心,但你可以使用自己的类。科学博士
您可以使用以下简单的命令获取整个表结构。
DESC TableName
或者您可以使用以下查询。
SHOW COLUMNS FROM TableName