首頁 > 後端開發 > php教程 > 為什麼 PHP 變數在 MySQL 的 VALUES 子句中使用時會導致錯誤?

為什麼 PHP 變數在 MySQL 的 VALUES 子句中使用時會導致錯誤?

Patricia Arquette
發布: 2024-12-21 15:17:10
原創
424 人瀏覽過

Why Do PHP Variables Cause Errors When Used in MySQL's VALUES Clause?

如何在MySQL 語句中包含PHP 變數

問題:

在PHP 中,在MySQL 語句中使用變數VALUES 中包含的MySQL語句會導致

問題:

為什麼在 VALUES 中包含變數會導致錯誤?

答案:

有兩種不同的方法可以在MySQL 語句中包含PHP 變數正確:

  1. 使用準備語句:

    對於表示SQL資料文字(字串、數字)的變量,必須使用準備語句。這牽涉到:
    • 在SQL 語句中定義佔位符
    • 準備查詢
    • 將變數綁定到佔位符
    • 執行查詢

    範例(mysqli):

    $type = 'testing';
    $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)";
    $mysqli->execute_query($sql, [$type, $reporter, $description]);
    登入後複製
  2. 使用白名單過濾:

    對於表示查詢部分的任何其他變數(例如關鍵字、識別碼),必須透過白名單過濾它們,確保僅使用允許的值。 範例(檢查orderby):

    $orderby = $_GET['orderby'] ?: 'name';
    $allowed = ['name', 'price', 'qty'];
    $key = array_search($orderby, $allowed);
    if ($key === false) throw new InvalidArgumentException("Invalid field name");
    登入後複製

結論:

遵守這些原則可以防止SQL 注入和確保SQL 注入和確保涉及PHP 變數時查詢的正確執行。準備好的語句應用於資料文字,而白名單可確保僅允許的值插入查詢的其他部分。

以上是為什麼 PHP 變數在 MySQL 的 VALUES 子句中使用時會導致錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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