おそらく、より良い方法は、返された結果セットから列名を読み取ることです。
$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;
}
}
私は答えを提供していますが、列名データクエリから分離を照会するために、このアプローチを取っている私はなぜわかりませんか? – Wolf
ALL_TAB_COLUMNSではなくUSER_TAB_COLUMNSを使用できますか。同じ名前の異なるスキーマに複数の表が存在し、ユーザーがこれらの表に付与している場合は、ALL_TAB_COLUMNSの両方の表に関連する列名が取得されます。 USER_TAB_COLUMNSを使用しない場合は、OWNER =条件をクエリに追加します。あなたの問題を解決するには、ORDER BY COLUMN_IDを追加してください。 –