PHP PDO 準備語句中的綁定識別碼和語法關鍵字
動態查詢透過利用變數定義表名、列來允許靈活的資料庫操作名稱和搜尋值。但是,使用 PDO 準備好的語句綁定識別碼(表或欄位名稱)或語法關鍵字可能會導致意外結果。
問題:
使用bindParam() 或bindValue 時() 綁定表示標識符或語法關鍵字的變量,返回空數組而不是預期的資料庫結果。
解釋:
PDO 準備好的語句只能綁定資料文字。因此,嘗試綁定標識符或關鍵字不會得到預期的結果。
解決方案:
要建立安全可靠的動態查詢,至關重要:
程式碼範例:
格式化並驗證識別碼:
$field = "`" . str_replace("`", "``", $field) . "`";
白名單並驗證關鍵字:
$dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC';
然後,將清理後的變數包含在準備好的變數中宣告:
$stmt = $db->prepare(' SELECT * FROM ? WHERE ? LIKE ? '); $stmt->bindParam(1, $searchTable); $stmt->bindParam(2, $searchBy); $stmt->bindValue(3, '%' . $searchTerm . '%');
透過遵守這些規則,您可以確保動態資料庫查詢的有效性和安全性。
以上是PHP PDO 準備語句中可以綁定識別字和關鍵字嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!