我试图创建一个简单的PHP页面来描述我的DB的表,这样我就可以总是找到一个表/列名或数据类型,我正在寻找(一种穷人的模式,如果你愿意)。
我过去用Sybase数据库做过这个,但我们的新数据库将是SQL Server,所以我试图使用该数据库重现它。
try {
$conn = new PDO("odbc:Driver={SQL Native Client};Server=servername,1433;Database=dbname;Uid=user;Pwd=password;");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch(PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
try {
$query = $conn->query("execute sp_help tablename");
} catch(PDOException $e) {
echo "Error: ".$e->getMessage();
}
while($result = $query->fetch(PDO::FETCH_ASSOC)) {
print_r($result);
}
但这就好像我只得到第一个结果(它不会循环)。我期待类似于这里给出的例子SQL Server FAQ,但我得到的只是第一行(name,owner,type,date_created),结果集没有给出列名等(这是我真正想要的)。
有什么想法吗
更新:根据TechNet,如果给定的参数是一个用户表,它应该返回列,但在这种情况下它没有。我得到的只有...
Array ( [Name] => TableName [Owner] => dbo [Type] => user table [Created_datetime] => 2013-07-15 23:26:43.377 )
2条答案
按热度按时间zfciruhq1#
我能想到的唯一方法是在sybase端创建一个过程,它可以调用sp_help并返回require数据。这个程序可以在你需要的时候使用。
3yhwsihp2#
这个问题是10年前的事了,但从那以后我没有找到其他答案。我的解决方案:这对我很有效(不仅在获取sp_help 'tablename'时):