[英]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);
}
對於 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.