2012-05-04 40 views
0

2個關於來自MySQL表的加密/解密值的查詢。對加密的MySQL表進行排序和查詢

1)我怎樣才能對這些進行排序,因爲值被加密ORDER BY已經不存在了,並且JavaScript將不會正確排序a)和b)。下面的代碼,請原諒格式。

2)如何查詢'值之間'

在此先感謝。

<html> 

<body> 
    <table> 
     <tr> 
<?php 
// Connects to Server, queries all on that table. 
$db_connect=mysql_connect("$host", "$username", "$password")or die("Sorry, Poor or No Connection"); 
$db_found=mysql_select_db("$db_name")or die("Sorry, Cannot Connect to Database"); 
$result=mysql_query("SELECT * FROM $tbl_name"); 

// Creates Table to be used 
echo " 
    <th>First Name</th> 
    <th>Last Name</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) { 
    // Decrypts table IDs 
    $dec_FName = decrypt($row['FName'],'SECUREKEY'); 
    $dec_LName = decrypt($row['LName'],'SECUREKEY'); 

    echo "<tr>"; 
    <echo>"<td>" . $dec_FName . "</td>"; 
    <echo>"<td>" . $dec_LName . "</td>"; 
    echo "</tr>"; 
    } 
    echo "</table>"; 

    mysql_close(); 
?> 

</body> 
</html> 

我懷疑需要創建一個數組。我很高興使用JavaScript,PHP或其他你能推薦的東西。

回答

-1

我不認爲你可以在SQL服務器做到這一點。如果這些列全部加密,那麼它就無法以有意義的方式對列進行排序或過濾。

你需要的數據拉入你的PHP並有排序。一旦你解密了數據,你就可以使用任何PHP的array handling functions或你自己的。

顯然與大型數據集這將成爲笨拙相當快,因爲​​你需要檢索每個使用的所有數據。也許你可以存儲一些未加密的數據用於此目的,但顯然這對你的安全需求非常具體。

1

這對我工作得很好:

$q3='SELECT users.uid, 
users.vr, 
users.br, 
AES_DECRYPT(users.nm1,"123") AS nm1, 
AES_DECRYPT(users.nm2,"123") AS nm2, 
AES_DECRYPT(users.nm3,"123") AS nm3, 
ussys.ty1, 
ussys.ty3 
FROM users,ussys WHERE users.uid=ussys.uid 
ORDER BY nm1 DESC 
'; 

它很好的排序上NM1,給我扎克 - Willeke維克多 - Roiwan - 撲通 - Kwab-KRAB-卡雷爾 - 約翰 - 哈利 - 傑拉德 - 德克 - 科內利斯因此 - 伯納德 - 安東。

相關問題