MySQL 中的準備語句
擔心 MySQL 程式碼的安全性和效率?準備好的語句提供了手動輸入轉義的有效替代方案,並且可以在常規 MySQL 中實現,而無需遷移到 MySQLi。
用於自動輸入處理的 PDO
PHP 資料物件 ( PDO)是一個強大的工具,可以有效地處理資料庫連接和輸入處理。透過使用 PDO,您可以放心,所有資料庫輸入都將被安全地視為文字字串,從而無需手動轉義。
PDO 實作
實作PDO ,建立資料庫物件並指定資料庫設置,包括資料庫字元編碼:
<code class="php">$db = new PDO("mysql:host=[hostname];dbname=[database]",'[username]','[password]'); $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8"); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec('SET NAMES utf8');</code>
使用範例
建立資料庫物件後,使用它安全地執行SQL 查詢並綁定參數:
<code class="php">$id = 1; $q = $db->prepare('SELECT * FROM Table WHERE id = ?'); $q->execute(array($id)); $row = $q->fetch(); echo $row['Column_1'];</code>
其他功能
PDO允許更新、通配符和rowCount 函數:
<code class="php">$q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?'); $q->execute(array('Value for Column_1','Value for Column_2',$id));</code>
<code class="php">$search = 'John'; $q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?'); $q->execute(array('%'.$search.'%')); $num = $q->rowCount();</code>
安全注意事項
PDO 的準備語句透過將所有輸入視為文字字串,在防止SQL 注入攻擊方面非常有效。但是,請務必記住,它們不能防止其他類型的漏洞,例如跨站腳本 (XSS)。
結論
MySQL 中的準備語句使用 PDO 在安全性和程式碼效率方面具有顯著的優勢。透過利用這種方法,您可以保護您的資料庫免受惡意攻擊並簡化您的開發工作流程。
以上是PDO的Prepared statements如何增強MySQL的安全性與效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!