開始使用 MySQL 中的預備語句
預備語句是寫出安全且有效率的 SQL 查詢的重要工具。在本文中,我們將探討如何在 PHP 中的 MySQLi 擴充 mysqli 中使用預先準備語句。
語法錯誤:非物件執行
您遇到的錯誤、「致命錯誤:在非物件上呼叫成員函數execute()」通常表示$stmt 變數未正確初始化或是一個物件。以下是修正方法:
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
在繼續之前確保您與資料庫有有效的連線。
綁定參數
準備好的語句使用參數標記(例如?)來表示輸入值。在執行語句之前,需要將這些值綁定到 PHP 變數。以下是一個範例:
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
在此範例中,我們將 name 參數綁定為字串 ('s'),將age 參數綁定為整數 ('i')。
執行語句
參數綁定後,就可以執行準備好的語句了語句:
$stmt->execute();
處理錯誤
處理錯誤if ($stmt->error) { die("Error: " . $stmt->error); }
處理錯誤
// Establish connection $mysqli = new mysqli("localhost", "root", "root", "test"); // Prepare and bind parameters $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); $stmt->bind_param('si', $name, $age); // Insert multiple rows $name = 'one'; $age = 1; $stmt->execute(); $name = 'two'; $age = 2; $stmt->execute(); // Prepare and execute select statement $stmt = $mysqli->prepare("SELECT * FROM users"); $stmt->execute(); // Bind result $result = $stmt->get_result(); // Process results while ($row = $result->fetch_assoc()) { echo $row['name'] . ", " . $row['age'] . "
\n"; } // Handle errors if ($stmt->error) { die("Error: " . $stmt->error); }
以上是如何透過 PHP 有效地使用 MySQL 中的預先準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!