字段名称,使用PHP查询Oracle数据库

时间:2017-09-24 18:38:45

标签: php sql oracle

我在下面有这个查询,从数据库返回一个查询并显示表中的所有信息,然后用户输入查询。

有没有办法让字段名称填充在表格的顶部?否则第一行是原始数据。我正在努力寻找一种方法来做到这一点,所以任何帮助都会受到赞赏。

<?php

if ($safeparam1 === null) {
}
else {

$stid = oci_parse($conn, $safeparam1);
$r = oci_execute($stid);

print '<p><input type="button" value="Clear Results" 
onclick=location.href=\'ul_move_query.php\';>  <input type="submit" 
value="Print Results">';
print '<table>';

while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {
print '<tr>';
foreach ($row as $item) {
    print '<td>'.($item !== null ? htmlentities($item, ENT_QUOTES) : 
'').'</td>';
}
print '</tr>';
}
}


?>

3 个答案:

答案 0 :(得分:1)

在获取关联数组时,您只需输出数组键作为标题行:

$header = false; // a way to track if we've output the header.
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {
    if ($header == false) {
        // this is the first iteration of the while loop so output the header.
        print '<thead><tr>';
        foreach (array_keys($row) as $key) {
            print '<th>'.($key !== null ? htmlentities($key, ENT_QUOTES) :
                    '').'</th>';
        }
        print '</tr></thead>';

        $header = true; // make sure we don't output the header again.
    }

    // output all the data rows.
    print '<tr>';
    foreach ($row as $item) {
        print '<td>'.($item !== null ? htmlentities($item, ENT_QUOTES) :
                '').'</td>';
    }
    print '</tr>';
}

答案 1 :(得分:0)

您可以查询Adview表以获取Oracle中特定表的所有列。

ALL_TAB_COLUMNS

答案 2 :(得分:0)

OCI8包含oci_num_fields()oci_field_name()等元数据调用。它们可以像:

一样使用
$s = oci_parse($c, "select * from employees");
if (!$s) {
    $m = oci_error($c);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($s);
if (!$r) {
    $m = oci_error($s);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}

echo "<table border='1'>\n";
$ncols = oci_num_fields($s);
echo "<tr>\n";
for ($i = 1; $i <= $ncols; ++$i) {
    $colname = oci_field_name($s, $i);
    echo "  <th><b>".htmlspecialchars($colname,ENT_QUOTES|ENT_SUBSTITUTE)."</b></th>\n";
}
echo "</tr>\n";

while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "<td>";
        echo $item!==null?htmlspecialchars($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;";
        echo "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";