PHP无法从Oracle数据库读取SQL结果语句

PHP无法从Oracle数据库读取SQL结果语句,php,sql,oracle,Php,Sql,Oracle,我有一个疑问: $sql = "SELECT CPACK, ('[' || CPACK || '][' || REPLACE(UPPER(DESC_PACK),UPPER(' ".substr(str_replace($battlezone," ",""),0,-1)."'),'') || ']') CPACKITEM FROM p_product_indihome_valid where (1=1) and cpack in (select cpack from

我有一个疑问:

$sql = "SELECT CPACK, ('[' || CPACK || '][' || REPLACE(UPPER(DESC_PACK),UPPER(' ".substr(str_replace($battlezone," ",""),0,-1)."'),'') || ']') CPACKITEM
        FROM p_product_indihome_valid
        where (1=1) and cpack in (select cpack from p_paket where JENIS = 'A' and valid = '1' and paket like '%~".$paket."~%' and 
                    id_rule in (select id_rule from p_paket_rule where (";
for($i=0;$i<count($param);$i++){
    $sql2 .= " or (MTARGET = '".$paramName[$i]."' and REGEXP_LIKE (REPLACE(mvalue,'&','dan'),'~".str_replace('&','dan',$param[$i])."~|0'))";
}
$sql .= ltrim($sql2,' or');
$sql .= ") group by id_rule having count(mtarget) = 3)) group by CPACK,DESC_PACK ORDER BY DESC_PACK";
$stid = oci_parse($this->_conn, $sql);
$r = oci_execute($stid);
print_r($sql);
我在SQL Developer中运行查询,结果如下:

cpack  | citem
USEE84  [USEE84][ADDITIONALSETUPBOXUSEETV]
C15062  [C15062][CS-INDIHOMEJOINPROMOVISACREDITCARDINTERNET]
C15061  [C15061][CS-INDIHOMEJOINPROMOVISACREDITCARDPHONE]
VOICE   [VOICE][FEATUREVOICE]

但是当我用
print\r($stid)显示查询结果时,它显示空值。我不知道错误在哪里。

您的代码当前没有获取结果集

下面是如何使用
oci\u fetch\u array
获取结果集,并获得所需的结果——将此添加到代码底部:

$results = [];
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    $results[] = $row;
}
print_r($results);
oci_fetch_数组-将查询中的下一行作为关联数组或数字数组返回

用法:数组oci\u fetch\u数组(resource$语句[,int$模式])

下面的文档和其他示例:

$results = [];
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    $results[] = $row;
}
print_r($results);