【问题标题】:PHP can not read SQL result statement from Oracle databasePHP 无法从 Oracle 数据库中读取 SQL 结果语句
【发布时间】:2016-01-08 02:07:07
【问题描述】:

我有这个问题:

$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);

它显示:

SELECT CPACK, ('[' || CPACK || '][' || REPLACE(UPPER(DESC_PACK),UPPER(' '),'') || ']') 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 '%~1~%' and 
id_rule in (select id_rule from p_paket_rule where ((MTARGET = 'SUBLAYANAN' and REGEXP_LIKE (REPLACE(mvalue,'&','dan'),'~DCS - UCS II~|0')) or (MTARGET = 'LAYANAN' and REGEXP_LIKE (REPLACE(mvalue,'&','dan'),'~DCS~|0')) or (MTARGET = 'SOCIO' and REGEXP_LIKE (REPLACE(mvalue,'&','dan'),'~Lain-lain~|0'))) group by id_rule having count(mtarget) = 3)) group by CPACK,DESC_PACK
ORDER BY DESC_PACK;

我在 SQL Developer 中运行查询,结果显示如下:

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

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

【问题讨论】:

    标签: php sql oracle


    【解决方案1】:

    您的代码当前未获取结果集。

    这里是如何使用 oci_fetch_array 获取结果集并获得您想要的结果 - 将其添加到代码的底部:

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

    oci_fetch_array — 将查询中的下一行作为关联数组或数值数组返回

    用法:数组oci_fetch_array(资源$statement [, int $mode])

    以下文档和其他示例:

    http://php.net/oci_fetch_array

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多