準備好的語句:它們可以處理識別字和關鍵字嗎?
動態查詢利用變數來指定表格、欄位和搜尋值。雖然將變數連接到查詢中已被證明是成功的,但使用 PDO 的 bindParam() 或 bindValue() 綁定變數會導致空數組。
為什麼不行:
PDO 準備好的語句只允許資料文字的佔位符。嘗試使用佔位符表示標識符(表或欄位名稱)或關鍵字將無法運作。
解決方案:
識別碼: 要包含表示標識符的變量,請遵循以下步驟規則:
關鍵字:
// Safely format identifier $field = "`" . str_replace("`", "``", $field) . "`"; $sql = "SELECT * FROM t ORDER BY $field"; // Whitelist keyword $dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; $sql = "SELECT * FROM t ORDER BY field $dir";範例程式碼:
以上是準備好的語句可以處理資料庫識別碼和關鍵字嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!