首頁 > 後端開發 > php教程 > 如何透過 PHP 有效地使用 MySQL 中的預先準備語句?

如何透過 PHP 有效地使用 MySQL 中的預先準備語句?

Linda Hamilton
發布: 2025-01-02 16:14:39
原創
171 人瀏覽過

How to Effectively Use Prepared Statements in MySQL with PHP?

開始使用 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); }
登入後複製
處理錯誤

準備好的語句比直接SQL 查詢提供更好的錯誤處理。使用mysqli_stmt::error 方法檢索錯誤訊息:完整範例這是插入、選取和處理錯誤的完整範例:透過使用prepared statements,可以防止SQL注入攻擊,寫出更健壯、更有效率的SQL查詢。

以上是如何透過 PHP 有效地使用 MySQL 中的預先準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板