我正在尝试从数据库'settings'中提取所有列名,并将它们列在PHP中。
有一些研究得出以下结论:
SHOW COLUMNS FROM settings
但我不知道如何通过PHP列出这些内容。 如果发布的任何代码是预先准备好的语句格式,那将会很有帮助,但不是必需的。
这是我的PHP,它给了我这个错误:
Notice: Undefined index: sThumbWidth in /home/demomycm/public_html/subdomains/mercury/eshop/library/classes/class.settings.php on line 204
我的数据库中的每个字段。
$loadColumns = array();
$query = "SHOW COLUMNS FROM settings";
$result = $this->glob->dbConn->query($query);
if($this->glob->dbConn->errno) {
trigger_error('An error occurred whilst loading counties from the database.' . PHP_EOL . 'Query: ' . $query . PHP_EOL . 'Error[' . $this->glob->dbConn->errno . ']: ' . $this->glob->dbConn->error, E_USER_WARNING);
} elseif($result->num_rows) {
while($row = $result->fetch_assoc()) {
$loadColumns[$row['Field']];
}
return $loadColumns;
}
$loadColumnsHtml = '';
$loadColumns = $this->Settings->LoadColumns();
foreach($loadColumns as $i => $field) {
$loadColumnsHtml .= '<div class="home-stat-small-link">' . ($i + 1) . '. <strong>' . $field['Field'] . '</strong>.</div>';
}
答案 0 :(得分:1)
使用describe
DESCRIBE my_table;
或者在较新的版本中,您可以使用INFORMATION_SCHEMA:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
答案 1 :(得分:0)
在您的代码中,您将$loadColumns
作为数组
这条线没有任何作用:$loadColumns[$row['Field']];
基本上你使用与$row['Field'
关联的密钥获取$ loadColumns中的值而不分配任何内容。
你可能想要这样的东西:
array_push($loadColumns,$row['Field']);
以下完整代码
$loadColumns = array();
$query = "SHOW COLUMNS FROM settings";
$result = $this->glob->dbConn->query($query);
if($this->glob->dbConn->errno) {
trigger_error('An error occurred whilst loading counties from the database.' . PHP_EOL . 'Query: ' . $query . PHP_EOL . 'Error[' . $this->glob->dbConn->errno . ']: ' . $this->glob->dbConn->error, E_USER_WARNING);
} elseif($result->num_rows) {
while($row = $result->fetch_assoc()) {
array_push($loadColumns,$row['Field']); //<-- this line has been changed
}
return $loadColumns;
}
$loadColumnsHtml = '';
$loadColumns = $this->Settings->LoadColumns();
foreach($loadColumns as $i => $field) {
$loadColumnsHtml .= '<div class="home-stat-small-link">' . ($i + 1) . '. <strong>' . $field['Field'] . '</strong>.</div>';
}
答案 2 :(得分:0)
在MySQL连接(不建议使用)上,您可以使用:
mysql_list_fields
关于PDO(推荐)使用:
$query = $dbh->prepare("DESCRIBE tablename");
$query->execute();
$tableFields = $query->fetchAll(PDO::FETCH_COLUMN);
在PDO上,您也可以使用PDOStatement::getColumnMeta()
。但它具有以下状态:实验