2017-07-17 105 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没有得到正确的“字段”。