gpt4 book ai didi

php - 在 mssql pdo 中获取列名

转载 作者:搜寻专家 更新时间:2023-10-31 20:44:39 26 4
gpt4 key购买 nike

我正在根据一些 MS SQL PDO 查询构建一个 HTML 表。或者试图。我遇到的第一个障碍是无法获取特定表的列名。找到here , 我已经尝试了解决方案

function getColumnNames(){ 

$sql = "select column_name from information_schema.columns where table_name = 'myTable'";
#$sql = 'SHOW COLUMNS FROM ' . $this->table;

$stmt = $this->connection->prepare($sql); //this is the line that triggers the error

try {
if($stmt->execute()){
$raw_column_data = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($raw_column_data as $outer_key => $array){
foreach($array as $inner_key => $value){
if (!(int)$inner_key){
$this->column_names[] = $value;
}
}
}
}
return $this->column_names;
} catch (Exception $e){
return $e->getMessage(); //return exception
}
}

getColumnNames();

得到错误:

Fatal error: Using $this when not in object context

鉴于此(来自同一篇 SO 帖子)

$q = $dbh->prepare("DESCRIBE username");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);
print_r($table_fields);

产生错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2812 General SQL Server error: Check messages from the SQL Server [2812] (severity 16) [(null)]'

我只是想获取列的名称,这样我就可以遍历并获取它们每一行的值。我怎样才能做到这一点?谢谢

最佳答案

DESCRIBE 是 MySQL 特定的命令。在 MS SQL 上,您可以为此使用存储过程:

exec sp_columns MyTable

您可以在 MSDN 找到文档

这是一个如何使用 PDO 完成此操作的小示例:

<?php

// will contain the result value
$return = null;

// replace table name by your table name
$table_name = 'table_name';

// prepare a statement
$statement = $pdo->prepare("exec sp_columns @table_name = :table_name");

// execute the statement with table_name as param
$statement->execute(array(
'table_name' => $table_name
));

// fetch results
$result = $statement->fetchAll($sql);

// test output
var_dump($result);

关于php - 在 mssql pdo 中获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14699608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com