我希望显示表格内容以及列名称。
我使用SQL查询列
"SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = $mytable"
我使用SQL查询内容
"SELECT * FROM $mytable"
两者都运转良好。唯一的是,列的顺序是不同的。有时它只是反过来。根据$ mytable中的列数,有时它会反转2-3列。
答案 0 :(得分:4)
您需要在ALL_TAB_COLUMNS
上查询COLUMN_ID
时包含订单:
"SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = $mytable ORDER BY COLUMN_ID".
按订单创建的顺序对列进行排序。
答案 1 :(得分:0)
可能更好的方法是简单地从返回的结果集中读取列名。这意味着您只需要一个查询:
$conn = oci_connect($username, $password, $connectionString);
$stmt = oci_parse($conn, 'select * from mytable');
oci_execute($stmt);
$headers = false;
while ($row = oci_fetch_assoc($stmt)) {
if (!$headers) {
// this will only output the headers on the first iteration.
print_r(array_keys($row));
$headers = true;
}
print_r($row);
}
或者你可以对结果集使用oci_field_name()
,但我总觉得上面的方法更简单。
编辑: 如果没有结果,您将无法获取密钥(因为数组为空)。您可以在while
循环后添加以下代码来处理:
if (!$headers) {
for ($i = 1; $i <= oci_num_fields($stmt); $i++) {
echo oci_field_name($stmt, $i), PHP_EOL;
}
}