如何将Oracle DB中的行正确插入HTML选择框

时间:2019-07-16 23:28:59

标签: php html sql oracle

我正在从Oracle表中获取行以将其放入选择框,但是输出与预期不符。为了提供一些上下文,我正在查询数据库以给我4列所需的行,以便将每一行放在下拉菜单中的一行上,但是相反,我将一行的每一列分别放在一行上。 我想获得有关如何继续将每一行及其4列放在一行上的帮助。

这是我从中检索数据的oracle表:

create table TP2_ITEM (
    NO_ITEM number generated always as identity,
    NO_ENCAN number(9) not null,
    NO_ITEM_ENCAN_ITE number(9) not null,
    TITRE_ITE varchar2(50) not null,
    CHEMIN_PHOTO_ITE varchar2(200) default 'N/A',
    DESC_ITE varchar2(200) default 'N/A',
    DONATEUR_ITE varchar2(25) not null,
    MNT_VALEUR_ITE number(8,2) not null,
    MNT_PRIX_DEPART_ITE number(8,2) not null,
    MNT_INCREMENT_MINI_ITE number(8,2) not null,
    MNT_ACHAT_IMMEDIAT_ITE number(8,2) not null,
    EST_FERME_ITE number(1) default 0,
    EST_PAYE_ITE number(1) default 0,
    constraint PK_ITEM primary key(NO_ITEM),
    constraint FK_NO_ENCAN1 foreign key(NO_ENCAN)
    references TP2_ENCAN(NO_ENCAN) on delete cascade,
    constraint AK_ENCAN_ITEM unique(NO_ENCAN,NO_ITEM_ENCAN_ITE));

这是获取我的行并将其放入选择框的代码:

<?php 
    $stid = oci_parse($conn, "select I.NO_ITEM, NO_ITEM_ENCAN_ITE, TITRE_ITE, 
                              MNT_VALEUR_ITE from TP2_ITEM I,TP2_ITEM_FAVORI F
                              where NOM_UTILISATEUR = '" .$nom_utilisateur. "' 
                              and F.NO_ITEM = I.NO_ITEM and NO_ENCAN = '" 
                              .implode(',', $no_encan_uti). "'";
    oci_execute($stid);
    echo "<select>";
    while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false {
        foreach ($row as $item) {
            echo "<option>" .$item. "</option>;
        }
    }
    echo "</select>";
    oci_free_statement($Stid);
?>
```[![Output from my program][1]][1]

P.S。运行程序时我没有任何错误,但是结果不是我所期望的,就像我先前描述的那样。

我从下拉菜单中得到的结果

** This is an image

1 个答案:

答案 0 :(得分:0)

假设I.NO_ITEM是标识符,并且您想使用该字段作为选项的值,并将其他三个字段用作文本,则可以

while ($row = oci_fetch_array($stid, OCI_ASSOC) {

    $value = $row[0];
    $text = $row[1] . ' ' . $row[2] . ' ' . $row[3];

    echo "<option value='$value'>$text</option>"; 

}

您无需在条件中将值与false进行比较,就足以将该值用作条件,如果为false,则条件失败。

如果您检查发布的代码,您还将看到在分配((while ($row = oci_fetch_array(...))周围有两组括号,但是在!=false条件之后和{之前没有括号。因此您的代码可能没有运行。