2014-01-06 3 views
0

hye. Я успешно шифрую конфиденциальные данные в моей базе данных. Теперь я хочу расшифровать данные и отобразить их в Интернете. Я попробовал этот код, но у меня ошибка. можешь мне помочь?как отобразить дешифрованный текст в сети

<?php 

// Connects to the XE service (i.e. database) on the "localhost" machine 
    $conn = oci_connect('DEVELOPER', 'xs2developer', 'localhost/XE'); 


if (!$conn) { 
$e = oci_error(); 
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); 
} 

    $id = $_GET['id']; 
    $query1 = "SELECT *,enc_dec.decrypt(DATA_FYP) AS DECRYPT_DATA FROM FYP WHERE ID_USER='".$id."'"; 

     $stid = oci_parse($conn, $query1); 
     oci_execute($stid); 

echo "<form name='form1' method='post' action=' '>";  
echo "<table align='center'>"; 


while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) 
{ 
    echo "<tr>"; 
    echo "<td><b> Hostname : </b></td>"; 
    echo "<td width='100'><input type='text' name='HOST_NAME' size='30' value=' " . $row['HOST_NAME'] . " ' /></td>"; 
    echo "</tr>"; 

    echo "<tr>"; 
    echo "<td><b> IP Address : </b></td>"; 
    echo "<td width='100'><input type='text' name='IP_ADDRESS' size='30' value= ' ".$row['IP_ADDRESS']. " '/></td>"; 
echo "</tr>"; 

    echo "<tr>"; 
    echo "<td><b> Last Login : </b></td>"; 
    echo "<td width='100'><input name='LAST_LOGIN' type='text' size='30' value=' " .$row['LAST_LOGIN'] . " ' /> </td>"; 
    echo "</tr>"; 

    echo "<tr>"; 
    echo "<td><b> Data : </b></td>"; 
    echo "<td width='100'><textarea name='DATA_FYP' rows='10' cols='25'>".$row['DECRYPT_DATA']."</textarea></td>"; 
    echo "</tr>"; 


    echo "<tr>"; 
    echo "<td><b> Date : </b></td>"; 
    echo "<td width='100'><input name='DATE_REG' type='text' size='30' value=' " .$row['DATE_REG'] . " ' /> </td>"; 
    echo "</tr>"; 

    echo "<td>&nbsp;</td>"; 
    echo "<td align='center'><input type='submit' name='Analyze' value='Analyze'></td>"; 



echo "</tr>"; 

} 
echo "</form>"; 
echo "</table>";  


?> 

и это моя база данных.

enter image description here

и это ошибка, которую я получил. enter image description here

+0

Какая ошибка вы получаете? –

+0

@MartinDinov Я добавил eror, что у меня есть –

+0

@AlexPoole, $ stid = oci_parse ($ conn, $ query1); \t oci_execute ($ stid); –

ответ

0

Это не имеет ничего общего с вашей функцией расшифровки. ou не может использовать * самостоятельно и включать другой столбец (включая вычисленное или фиксированное значение в виде столбца psuedo), если вы не укажете таблицу или ее псевдоним. Это получает ту же ошибку:

select *, x as y from dual; 
Error at Command Line : 2 Column : 9 
Error report - 
SQL Error: ORA-00923: FROM keyword not found where expected 

Но это нормально:

select d.*, x as y from dual d; 

Таким образом, вы должны иметь:

$query1 = "SELECT FYP.*,enc_dec.decrypt(DATA_FYP) AS DECRYPT_DATA FROM FYP WHERE ID_USER='".$id."'"; 

или

$query1 = "SELECT f.*,enc_dec.decrypt(f.DATA_FYP) AS DECRYPT_DATA FROM FYP f WHERE f.ID_USER='".$id."'"; 

Использование select * обескураживают так или иначе; яснее, если вы явно перечисляете нужные столбцы и порядок, в котором они должны быть. Здесь, похоже, не так много практических различий, но если в таблицу добавлено больше столбцов, вы будете извлекать данные, использования и в других обстоятельствах (например, с использованием позиционных, а не именных переменных) вы можете получить ошибки. В любом случае указание столбцов - хорошая привычка.

1
SELECT * FROM TABLE 

используется для передачи данных всех столбцов в таблице, так и не может использовать

SELECT *,column_name from TABLE; 

Изменения ниже строки с использованием псевдонима для таблицы

$query1 = "SELECT A.*,enc_dec.decrypt(A.DATA_FYP) AS DECRYPT_DATA FROM FYP A WHERE ID_USER='".$id."'"; 
+0

спасибо. я понял. :) –

Смежные вопросы