2013-08-31 190 views
0

所以我有此到目前爲止..PHP檢索數據庫值

if(isset($_POST['Decrypt'])) 
{ 
    $dbinary = strtoupper($_POST['user2']); 
    $sqlvalue = "SELECT `value` FROM `license` WHERE `binary` = '$dbinary'"; 
    $dvalue = mysql_query($sqlvalue) or die(mysql_error()); 
} 

我有用戶在其中輸入該被加密的二進制代碼的字段。 (加密部分工作)。這應該從數據庫中檢索值。當我這樣做,而不是顯示的值,它說「資源ID#11」。

+0

這很容易被SQL注入。強烈建議從現在不推薦使用的'mysql _ *()'API切換到更加現代的,比如支持參數化查詢的PDO。 [本教程將幫助你開始](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers) –

+0

我打算儘快這樣做,但暫時我只將它用於個人事務,並且它在我的個人服務器上。除了我以外,任何人都無法訪問,也沒有人知道。 –

回答

2

您的報價沒有任何問題。事實上,一切看起來都是正確的。

事情是,現在$ dvalue只是SQL數據庫的資源。你有一個更多的線來獲取內容:

$dvalue = mysql_fetch_array($dvalue); 

在未來,你可能要開始使用PDO或庫MySQLi而不是MySQL的功能,因爲這些被棄用的5.5.0。 PDO和MySQLi的優勢在於它們提供了SQL注入的安全性,當用戶通過輸入諸如x'; DROP TABLE members; --之類的東西來運行他們自己的SQL代碼時。

+1

...之後您將擁有一個數組,因此請務必以數組鍵'$ dvalue ['value']'的形式訪問需要的列,否則,您將獲得'Array'作爲輸出。 –

+0

好吧,邁克爾你是對的,「陣列」出現了。然而,當我進入'$ dvalue ['value']'就像你說的,我得到這個錯誤 解析錯誤:語法錯誤,意外的'}'在/ home/u923860750/public_html/cpanel/cpanel.php在31行 –

+0

哦等,那是因爲我沒有放一個;在線後。但是,當我把分號,再次顯示'數組'' –

-1

閱讀本頁:W3 Schools page on MySQL select useage。基本上$ dvalue是一個結果集ID,你需要在另一個步驟中實際將數據從數據庫中提取出來。另外,mysql_ *函數已被棄用。查找並使用mysqli_ *函數。

while($row = mysqli_fetch_array($dvalue)) 
{ 
    echo $row['value']; 
    echo "<br>"; 
} 
+0

請鏈接到官方的PHP文檔,而不是w3schools,它被廣泛認爲是質量非常低(充滿SQL注入攻擊等) –

0

不要再使用mysql_函數了。他們是deprecated。改爲使用PDOMySQLi

這就是說,你只運行查詢,而不是檢索任何結果。您必須調用mysqli_fetch_array之類的函數才能從mysqli_query將返回的資源ID中獲取數據。

我的建議是回到教程和文檔,並用其中一個擴展名重試。祝你好運。