2014-09-12 71 views
-1

我通常使用mysql_query()從mysql數據庫中獲取數據。但有些人使用綁定來設置結果。那麼之間有什麼不同?在我看來,這兩個結果都是一樣的。但我覺得綁定有點複雜。任何人都可以請使用綁定的優點是什麼?謝謝。從SQL注入攻擊PHP和MySQL中的綁定是什麼?它有什麼用途?

+2

不同之處在於阻止了SQL注入,並且如果您使用不同的數據值多次重複相同的查詢 – 2014-09-12 14:03:25

回答

1

數據綁定提供了增強的保護(有時被稱爲SQLIA)。 SQL注入是惡意嘗試訪問您的數據庫的原因超出預期用途。在這裏使用你的想象力。因此,使用mysql_connect是一個非常糟糕的主意和library is deprecated as of PHP 5.5.0。有關更全面的概述,請參閱this article

綁定並不像它,如果你打破一個SQL查詢似乎複雜,它可以很容易解釋。

看看下面的代碼在老mysql圖書館爲例:

mysql_query(
    "INSERT INTO users (username, password, user_data) VALUES ('derek_jeter', 'password', 'additional_data')" 
); 

此代碼很容易受到SQLIA。有了像PDO這樣的庫,您只需添加一個額外步驟即可完全避免此問題。爲了實現更安全的庫相同的結果,你只需要在上面的代碼轉換爲以下幾點:

$db->prepare("INSERT INTO users (username, password, user_data) VALUES (:username, :password, :additional_data)"; 

$db->execute(
    array("username" => "derek_jeter", "password" => "password", "additional_data" => "additional_data") 
); 

綁定將數據發送到分開查詢插入到MySQL,並瞭解如何解析它插入而不會危及數據庫的安全。通過execute函數,您只需傳遞與您在prepare函數中定義的佔位符數據對應的鍵的數組。

注:我用的是「功能」,但是由於PDO庫實際上是你操縱的對象,包含在PDO類的功能在技術上稱爲「方法」。

在你能夠在PDO中運行查詢(比如實例化PDO連接和類)之前,還需要做更多的事情,但我會引用你到the docs which explain everything in great detail

此外,here's a tutorial I used when I first started using PDO and MySQLi

相關問題