在PDOStatement::bindParam() 中省略帶有命名參數的前導冒號
在PDOStatement::bindParam() 中,似乎傳遞不含前導冒號的命名參數(例如“:name”)與包含冒號等效(例如“姓名”)。鑑於文件指出「參數標識符」應包含命名佔位符的前導冒號,這種行為可能看起來令人費解。
官方支援
PDOStatement:: bindParam() 文件沒有明確聲明前導冒號對於命名參數是可選的。因此,謹慎的假設是這種行為不受官方支持,並且不應在生產代碼中使用。
底層機制
儘管缺乏官方文檔,但由於內部機制,前導冒號的省略似乎在 PHP 版本(例如 5.3.24)中起作用。具體來說,如果缺少冒號,則會在執行 PDOStatement::bindParam() 期間自動將其新增至參數。此內部修復可以在 PDO 原始碼 (ext/pdo/pdo_stmt.c) 中觀察到。
建議
雖然可以省略前導冒號在目前 PHP 版本中的命名參數中,不建議這樣做。缺乏官方支援意味著未來的 PHP 版本可能不會維護此行為,從而導致潛在的錯誤。因此,在將命名參數傳遞給 PDOStatement::bindParam() 時,最好始終包含前導冒號,以獲得最大的相容性和可靠性。
以上是省略 PDOStatement::bindParam() 命名參數中的前導冒號是支援的行為嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!