簡體   English   中英

PHP Oracle OCI8 查詢以保留/處理數組中的空列

[英]PHP Oracle OCI8 query to keep/handle null columns in array

我有以下 sql 查詢 .. 在其中我將內容映射到劍道前端表..

$sql = "SELECT big_id, fac_ident, lg_name, basic_tp, catc_vd, address, assoc_city, latitude, longitude, assoc_cnty, assoc_st, time_zone, faa_reg, ato_sa, ato_td, fema_reg, ops_hrs, prim_ph, atc_level, tower_type, manager, sat_phone_num, td_mgr, to_dist, tod_mgr, stof_fac, ops_status, crt_rl FROM myCoolApp.big_id";

問題是.. 在數據庫中沒有找到任何關聯值的列,沒有返回任何值,唉,只是從響應數組中完全省略了.. 即在上面的ops_hrs沒有找到任何值,所以它從我的數組 - 我需要它仍然存在,只是空白。

我希望響應仍然顯示數組中的列,即使它的值為 理想情況下,只需添加一個空格" "'N/A' 因為我不希望在我的數組和前端中刪除空列。

我的 PHP/sql 的其余部分...

        $stid = oci_parse($this->db, $sql);
        oci_execute($stid); 
            
        $myData = array();

        while ($list = oci_fetch_array($stid, OCI_ASSOC)) {
            array_push($myData, $list);
        }
    
        header('Content-Type: application/json');
        echo "{\"data\":" .json_encode($myData). "}";

我在這里缺少什么? 我需要用 PHP/sql 以編程方式處理它。

使用OCI_RETURN_NULLS

while ($list = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    array_push($myData, $list);
}

請參閱PHP OCI8 oci_fetch_array文檔

對於 SQL(和 Oracle),您可以使用NVL函數,如果存在則返回列值,如果不存在則返回“替代”。

例如,在此查詢comm列的值為NULL

SQL> select ename, comm from emp where empno = 7369;

ENAME            COMM
---------- ----------
SMITH

那時你會

SQL> select nvl(ename, 'N/A') as ename,
  2         nvl(comm , 0    ) as comm
  3  from emp
  4  where empno = 7369;

ENAME            COMM
---------- ----------
SMITH               0

SQL>

注意列的數據類型。 如果是字符串,則NVL應該返回一個字符串(例如'N/A' ); 如果它是一個數字,讓它返回一個數字(例如0 )等。

沒有“通用”的方法可以做到這一點,因此您必須將NVL應用於您選擇的所有列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM