我正在从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。
答案 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
条件之后和{
之前没有括号。因此您的代码可能没有运行。