2017-07-17 110 views
-3
ID MAIL KEY                                 
1.7072E [email protected] 48EF071156D86C05334D6E18A05E557129F51A6F10183AFAB14BD7581C58365D                    
1.7071E [email protected] 2445616C8C13B985ADE534B7550EA0938761BCBC7E99506E6F3D72275DA33FEC                    

我在我的數據庫中有這個表。我用SQL查詢不正確拉數據

SELECT ID, MAIL, KEY FROM Table WHERE MAIL='[email protected]'; 

if($row = oci_fetch_array($parsed_sql, OCI_BOTH+OCI_RETURN_NULLS+OCI_RETURN_LOBS)) { 
      $ID = $row['ID']; 
      $key = $row['KEY'];         
      print($ID.' ->'.$key); 

這個打印出來1.7072E - > $ Eal4Ua〜PNO = R']

誰能幫助我理解爲什麼我通過數據庫中的散列獲取特定數據? 我敢肯定,這是由於數據類型爲RAW,但是當我嘗試UTL_RAW.CAST_TO_VARCHAR2它回來未定義變種。

+0

如果它在Oracle中存儲爲RAW,你嘗試過使用rawtohex嗎? – tbone

+1

我有,在我的選擇中添加RAWTOHEX(KEY),仍然給我相同的輸出。 –

+1

是SQL Developer的輸出還是SQLPlus(cmd-line)的基於終端的會話的輸出?祝你好運。 – shellter

回答

1

更改我的SELECT語句:

SELECT ID, MAIL, RAWTOHEX(KEY) AS KEY FROM Table WHERE MAIL=:MAIL 

現在給了我正確的散列輸出。沒有混疊的問題是變量未定義的原因。

$key = $row['KEY']; 

沒有別名PHP沒有得到正確的「字段」。