PHP / mySQL获取所有列名并创建列表

时间:2015-01-15 13:31:55

标签: php mysql arrays

我用它来定义可用于在我的前端执行搜索的有效密钥:

$validKeys = array('gender','marital_status', 'age');

我的其余代码非常有用,因为它只接受在此数组中的AJAX调用中发送给它的密钥。

但是,我希望能够使此列表('gender','marital_status', 'age')动态化。也就是说,我想在这里包含我表中的所有列,以便每列都是一个有效的键。根据表格,我大概有10-15个,而不是硬编码到每个PHP文件中。

如何获取表格中的所有列名并将其排列到此变量中?所以,我需要获取所有名称,将它们用单引号和逗号分开。除非有办法将它们放入适当的数组中,否则跳过定义array变量的$validkeys部分。

如果我是var_dump $validKeys,我明白了:

array(5) {
  [0]=>
  string(6) "gender"
  [1]=>
  string(14) "marital_status"
  [2]=>
  string(3) "age"
  [3]=>
  string(7) "anglers"
  [4]=>
  string(8) "baseball"
}

任何方向都会受到赞赏。

编辑:我应该更明确地说我正在使用PDO。

3 个答案:

答案 0 :(得分:2)

你可以尝试使用mysqli的fetch_fields-function。

$finfo = $result->fetch_fields();

文档:http://php.net/manual/de/mysqli-result.fetch-fields.php

答案 1 :(得分:1)

使用DESCRIBE语法运行查询。这将返回所有列,然后您可以将其放入数组中。

DESCRIBE `table_name`;

另一个选项是SHOW COLUMNS。两者都可以满足您的要求。

答案 2 :(得分:1)

我应该更明确地说我正在使用PDO,所以周杰伦的回答指出了我正确的方向,我发现这个答案给了我详细信息:https://stackoverflow.com/a/7091984/989722

基于我的问题的完整代码段如下所示:

$q = $dbh->prepare("DESCRIBE full_db2");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);
$validKeys = $table_fields;
相关问题