首頁 > 資料庫 > mysql教程 > 如何將PHP變量安全地插入MySQL查詢中?

如何將PHP變量安全地插入MySQL查詢中?

Linda Hamilton
發布: 2025-01-25 16:42:11
原創
803 人瀏覽過

How to Safely Insert PHP Variables into MySQL Queries?

在MySQL語句中安全地包含PHP變量

在嘗試使用PHP變量作為SQL語句的一部分將值插入MySQL表時,可能會遇到問題。為確保正確執行,務必遵循以下規則:

1. 使用預處理語句

預處理語句對於添加表示SQL數據文字(字符串或數字)的PHP變量至關重要。必須在SQL語句中用佔位符替換變量,然後準備、綁定和執行查詢。

以下是使用mysqli的示例:

<code><br></br>$type = 'testing';<br></br>$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";<br></br>$stmt = $mysqli->prepare($sql);<br></br>$stmt->bind_param("ss", $reporter, $description);<br></br>$stmt->execute();<br></br></code>
登入後複製

對於PDO,綁定和執行部分可以組合:

<code><br></br>$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)";<br></br>$stmt = $pdo->prepare($sql);<br></br>$stmt->execute([$reporter, $description]);<br></br></code>
登入後複製

2. 實現白名單過濾

如果PHP變量表示查詢的一部分(超出數據文字),例如關鍵字或標識符,則必須針對預定義的允許值“白名單”進行檢查。這確保只有有效值包含在查詢字符串中。

以下是針對排序字段名稱的白名單過濾示例:

<code><br></br>$orderby = $_GET['orderby'] ?: "name"; // 设置默认值<br></br>$allowed = ["name", "price", "qty"]; // 允许的字段名称白名单<br></br>$key = array_search($orderby, $allowed, true);<br></br>if ($key === false) {throw new InvalidArgumentException("无效的字段名称");<p>}<br></br></p></code>
登入後複製

白名單過濾後,可以安全地將$orderby變量包含在SQL查詢中。

以上是如何將PHP變量安全地插入MySQL查詢中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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