MySQLi 準備語句:全面概述
MySQLi 準備語句為資料庫互動提供增強的安全性和效率。然而,開始使用它們可能具有挑戰性。
錯誤:使用未綁定語句
在提供的程式碼中,錯誤源自於嘗試執行準備好的語句「$ stmt」而不將參數綁定到它。 MySQLi 的「mysqli_stmt_prepare()」方法傳回一個表示準備好的語句的對象,但使用「mysqli_stmt_bind_param()」綁定佔位符是執行它之前的關鍵步驟。
準備語句綁定的語法:
$stmt->bind_param('data_type', $variable);
在此範例中,資料類型為's'(字串)和'i'(整數),後面接著包含要插入的值的PHP 變數。
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
一旦綁定了參考,就可以繼續執行:
$stmt->execute();
完整範例
這是一個涵蓋連接、插入和使用預準備語句進行錯誤處理的選擇:
connect_error) { die('Failed to connect: ' . $mysqli->connect_error); } // Insertion $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?, ?)"); $stmt->bind_param('si', $name, $age); $name = 'Bob'; $age = 30; $stmt->execute(); // Selection $stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bind_param('s', $name); $name = 'Bob'; $stmt->execute(); $result = $stmt->get_result(); // Fetch and display results while ($row = $result->fetch_assoc()) { printf("%s (%s)\n", $row['name'], $row['age']); } // Closing $stmt->close(); $mysqli->close(); ?>
透過遵循這些指南,您可以在PHP 和MySQLi 中有效地利用預先準備語句,從而增強安全性和資料庫互動效率。
以上是如何有效利用MySQLi預編譯語句增強資料庫安全性與效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!