首頁 >後端開發 >php教程 >如何使用 URL 參數在 PHP 中安全地建立 MySQL 準備語句?

如何使用 URL 參數在 PHP 中安全地建立 MySQL 準備語句?

Patricia Arquette
Patricia Arquette原創
2024-12-14 00:50:17676瀏覽

How Can I Securely Create MySQL Prepared Statements in PHP Using URL Parameters?

在 PHP 中建立安全的 MySQL 準備語句

準備語句為資料庫查詢提供更高的安全性和潛在的效能改進。這是使用 URL 參數的輸入在 PHP 中建立安全 MySQL 準備語句的綜合指南。

建立準備語句

實例化MySQLi 連線並使用mysqli_prepare 準備語句( ):

$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");

使用mysqli_stmt_bind_param() 將輸入參數值綁定到語句佔位符:

執行與取得資料
$userid = intval($_GET['userid']);
$category = intval($_GET['category']);
$stmt->bind_param('ii', $userid, $category);

執行準備好的語句並使用 myexecsql)檢索結果和mysqli_stmt_store_result():

使用 mysqli_stmt_bind_result()將列名綁定到變數並迭代結果:

$stmt->execute();
$stmt->store_result();

增強關聯的靈活性數組
$stmt->bind_result($column1, $column2, $column3);
while ($stmt->fetch()) {
    echo "col1=$column1, col2=$column2, col3=$column3 \n";
}

對於傳回多列的查詢(例如SELECT *),您可以使用stmt_bind_assoc() 函數將結果綁定到關聯數組:

效能增強
$resultrow = array();
stmt_bind_assoc($stmt, $resultrow);

while ($stmt->fetch()) {
    print_r($resultrow);
}

使用準備好的語句時可以提高相同查詢多次執行的效能,但建立和準備語句的開銷可能不足以僅在三到四次執行中使用它們。

執行以下步驟,您可以確保您的 MySQL 查詢安全且有效率。

以上是如何使用 URL 參數在 PHP 中安全地建立 MySQL 準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn