PDOStatement::bindParam() の名前付きパラメーターでの先頭コロンの省略
PDOStatement::bindParam() では、先頭にコロンのない名前付きパラメータ (例:「:name」) は、コロンを含めた場合 (例: 「name」) と同等に機能します。この動作は、「パラメータ識別子」に名前付きプレースホルダーの先頭のコロンを含める必要があると記載されているドキュメントを考慮すると、不可解に見えるかもしれません。
公式サポート
PDOStatement:: bindParam() のドキュメントには、名前付きパラメータの先頭のコロンがオプションであるとは明示的に記載されていません。したがって、この動作は公式にサポートされておらず、実稼働コードでは使用すべきではないと想定することが賢明です。
基礎となるメカニズム
公式ドキュメントが不足しているにもかかわらず、先頭のコロンの省略は、内部メカニズムにより 5.3.24 などの PHP バージョンで機能するようです。具体的には、コロンが欠落している場合、PDOStatement::bindParam() の実行中にパラメータに自動的に追加されます。この内部修正は、PDO ソース コード (ext/pdo/pdo_stmt.c) で確認できます。
推奨事項
ただし、先頭のコロンは省略できる場合があります。現在の PHP バージョンの名前付きパラメータでは、これはお勧めできません。公式サポートがないということは、将来の PHP バージョンではこの動作が維持されず、潜在的なエラーにつながる可能性があることを意味します。したがって、互換性と信頼性を最大限に高めるために、名前付きパラメーターを PDOStatement::bindParam() に渡すときは、常に先頭のコロンを含めることがベスト プラクティスです。
以上がPDOStatement::bindParam() 名前付きパラメータで先頭のコロンを省略することはサポートされている動作ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。