是否有一种方法可以在MySQL中使用PHP获取表的列名?
当前回答
您可以使用以下简单的命令获取整个表结构。
DESC TableName
或者您可以使用以下查询。
SHOW COLUMNS FROM TableName
其他回答
调查:
mysql_query('DESCRIBE '.$table);
如果使用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)轻松获取表的列名。
这对我很有效。
$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
... )
对不起死灵,但我喜欢我的功能;)
附注:我没有包括类核心,但你可以使用自己的类。科学博士
$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);
}
推荐文章
- 如何使用MySQL DECIMAL?
- 修改表:如何将“允许空”属性从不空改为允许空
- 使用PHP加密和解密密码的最佳方法是什么?
- 比较两个SQL Server数据库(模式和数据)的最佳工具是什么?
- 如何实现一个好的脏话过滤器?
- 在SQL中,如何在范围中“分组”?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 选项(RECOMPILE)总是更快;为什么?
- 移动一个文件到服务器上的另一个文件夹
- 设置数据库从单用户模式到多用户
- Laravel中使用雄辩的ORM进行批量插入
- oracle中的RANK()和DENSE_RANK()函数有什么区别?
- PHP 5.4调用时引用传递-容易修复可用吗?
- 警告用户/local/mysql/data目录不属于mysql用户